0

ユーザーが2つの整数(月と年)を入力する宿題があり、その方法を知りたいと思っていました。カレンダークラスのドキュメントを少し検索しましたが、探していたものが見つかりませんでした。私がやろうとしている主なことは、Windows のようなカレンダーを印刷することです。ユーザーからの入力は月と年の数字だけです。月が 31 である天気を見つける方法を見つける必要があります。 、30 日、29 日、または 28 日と、その月の開始日。 http://lifehacker.com/assets/2006/06/vista-windows-calendar.jpgこれは私がやりたいことですが、他の月の日を印刷せずにテキストとして.

4

4 に答える 4

1

これに使用できます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) ;
于 2012-10-01T18:51:20.783 に答える
1

DateFormatSymbolsをご覧ください。これには、月を取得するメソッドがあります。次に、配列内のインデックス位置(月番号)を使用して月を取得できます

   String[] months = new DateFormatSymbols(Locale.getDefault()).getMonths();
   System.out.println(months[0]);
   System.out.println(months[11]);

宿題なので、なぜ[0]Januarayを[11]与え、12月 を与えるのかを説明します。

于 2012-10-01T19:02:31.033 に答える
1

これは宿題なので、すべての豆をこぼすわけではありません。残りを把握する必要があります。

何を試したのか、月を見つけるとはどういう意味なのかわからなくても、年と月に基づいて Date オブジェクトを取得したいと思います。

Calendarクラスは良いスタートでした。まず、そのカレンダーの年と月の両方を設定getInstance()するメソッドを特に考慮して、メソッドでインスタンスを取得する必要があります。set(int field, int value)

設定しているフィールドをどうやって知るのか疑問に思っている場合は、Calendarそれ自体で定義されているさまざまな定数値を試してみてください (慣例により、それらは見つけやすいように大文字で名前が付けられています)。

Date最後に、getTime()メソッドを使用してそれを取得するだけです。

編集

クラスのアプローチに従ってCalendarset を使用すると、検索している月を思いつくことができます。

getActualMaximum(int field)withなどのメソッドを使用しCalendar.DAY_OF_MONTHます。それは実質的に答えの1つです。もう一つも同様で、お任せします。

ヒント: カレンダーを作成してフィールドを操作し、日付を 1 (最初の日) に設定し、現在の月を情報を取得する必要がある月に設定してみてください。

于 2012-10-01T18:52:45.107 に答える
0
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");
    }
}
于 2012-10-01T19:56:19.413 に答える