2

私の問題は、以下のシナリオで簡単に作成できます。

 //create a gregorian calendar object that set the date and time as 4th June 2012 at 10:30PM
 Calendar calendar = new GregorianCalendar(2012, 6, 4, 22, 30);

 //when I print out these:
 System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
 System.out.println(calendar.get(Calendar.MINUTE));
 System.out.println(calendar.get(Calendar.HOUR));
 System.out.println(calendar.get(Calendar.DATE));
 System.out.println(calendar.get(Calendar.MONTH));
 System.out.println(calendar.get(Calendar.YEAR));

 //output reads as:
 4
 30
 10
 4
 6
 2012

 //so does calendar.get(Calendar.DAY_OF_WEEK) == calendar.get(Calendar.DATE) ???

2012 年 6 月 4 日が月曜日であることを明確にするために、calendar.get(Calendar.DAY_OF_WEEK) は週の最初の曜日の一部として 0 を返すべきではありませんか?

ご協力とご心配をお寄せいただきありがとうございます。参照している情報源も確認してください。

ユーザー1442080

4

2 に答える 2

7

Java Calendar クラスの月は 0 ベースです。したがって、6 月は 5 番目の月です。

実際に 7 月 4 日を表すオブジェクトを作成しました。これはたまたまその週の 4 日目である水曜日です。

于 2012-06-07T11:57:17.387 に答える
4

Calendar.SUNDAY、Calendar.MONDAY、Calendar.JANUARY、Calendar.MARCH などのように、Calendar.{field}によって返される値を常に探す必要があります。これは、Calendar.{field}によって返される値が、 Calendar インスタンスの作成時に指定された TimeZone に依存するためです。タイムゾーンが異なる 2 つのカレンダー インスタンスを作成することで、これを試すことができます。

Calendar.getInstance("BST")

Calendar.getInstance() // default timezone

calendar.get(Calendar.DAY_OF_WEEK)次に、これら 2 つのインスタンスに対して異なる整数値を返すものを取得してみてください。

于 2013-06-11T07:23:51.587 に答える