ユーザーが2つの整数(月と年)を入力する宿題があり、その方法を知りたいと思っていました。カレンダークラスのドキュメントを少し検索しましたが、探していたものが見つかりませんでした。私がやろうとしている主なことは、Windows のようなカレンダーを印刷することです。ユーザーからの入力は月と年の数字だけです。月が 31 である天気を見つける方法を見つける必要があります。 、30 日、29 日、または 28 日と、その月の開始日。 http://lifehacker.com/assets/2006/06/vista-windows-calendar.jpgこれは私がやりたいことですが、他の月の日を印刷せずにテキストとして.
4 に答える
これに使用できますjava.util.Date
:
int month = 3 ; // Input
int year = 2012 ; // Input
Date date = new Date() ;
date.setMonth(month) ;
date.setYear(year) ;
ただし、Date
は非推奨であるため、java.util.Calendar
代わりに使用する必要があります。同等の機能は次のとおりです。
Calendar.set(Calendar.MONTH, month) ;
Calendar.set(Calendar.YEAR, year) ;
DateFormatSymbolsをご覧ください。これには、月を取得するメソッドがあります。次に、配列内のインデックス位置(月番号)を使用して月を取得できます
String[] months = new DateFormatSymbols(Locale.getDefault()).getMonths();
System.out.println(months[0]);
System.out.println(months[11]);
宿題なので、なぜ[0]
Januarayを[11]
与え、12月 を与えるのかを説明します。
これは宿題なので、すべての豆をこぼすわけではありません。残りを把握する必要があります。
何を試したのか、月を見つけるとはどういう意味なのかわからなくても、年と月に基づいて Date オブジェクトを取得したいと思います。
Calendar
クラスは良いスタートでした。まず、そのカレンダーの年と月の両方を設定getInstance()
するメソッドを特に考慮して、メソッドでインスタンスを取得する必要があります。set(int field, int value)
設定しているフィールドをどうやって知るのか疑問に思っている場合は、Calendar
それ自体で定義されているさまざまな定数値を試してみてください (慣例により、それらは見つけやすいように大文字で名前が付けられています)。
Date
最後に、getTime()
メソッドを使用してそれを取得するだけです。
編集
クラスのアプローチに従ってCalendar
set を使用すると、検索している月を思いつくことができます。
getActualMaximum(int field)
withなどのメソッドを使用しCalendar.DAY_OF_MONTH
ます。それは実質的に答えの1つです。もう一つも同様で、お任せします。
ヒント: カレンダーを作成してフィールドを操作し、日付を 1 (最初の日) に設定し、現在の月を情報を取得する必要がある月に設定してみてください。
import java.util.Calendar;
import java.text.SimpleDateFormat;
class PrintCalendar {
public static void main(String args[]) {
Calendar c = Calendar.getInstance();
int month = 3;
int year = 2011;
c.set(year, month, 1); // Set c's time to first day of specified month/year
// Day of week (by numerical index) can also be obtained programmatically with c.get(Calendar.DAY_OF_WEEK)
System.out.println("First day of month falls on a " + new SimpleDateFormat("EEEE").format(c.getTime()));
// "Actual maximum" means the maximum in the current timeframe; that is, it will return 29 for a February in a leap year
System.out.println("Month has " + c.getActualMaximum(Calendar.DAY_OF_MONTH) + " days");
}
}