例えば:
Calendar c = Calendar.getInstance();
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
out.println( c.get( Calendar.WEEK_OF_YEAR ) );
プリント1
ジョーダ時間でも同じことが起こります。
:)
例えば:
Calendar c = Calendar.getInstance();
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
out.println( c.get( Calendar.WEEK_OF_YEAR ) );
プリント1
ジョーダ時間でも同じことが起こります。
:)
週の定義はLocale
異なります。
それが米国でどのように定義されているかは、他の投稿で議論されています。たとえば、ドイツ(DIN 1355-1 / ISO 8601)の場合:年の最初の週*は、新年の4日以上の最初の週です。
*週の最初の日は月曜日で、週の最後の日は日曜日です
そして、JavaCalendar
はロケールに注意を払っています。例えば:
public static void main(String[] args) throws ParseException {
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date lastDec2010 = sdf.parse("31/12/2010");
Calendar calUs = Calendar.getInstance(Locale.US);
calUs.setTime(lastDec2010);
Calendar calDe = Calendar.getInstance(Locale.GERMAN);
calDe.setTime(lastDec2010);
System.out.println( "us: " + calUs.get( Calendar.WEEK_OF_YEAR ) );
System.out.println( "de: " + calDe.get( Calendar.WEEK_OF_YEAR ) );
}
プリント:
us: 1
de: 52
追加米国の場合(そしてメキシコでも同じだと思います)、1。Week of Yearは、1月1日が属する週です。--つまり、1。Januarが土曜日の場合、前の金曜日(12月31日)は同じ週に属し、この場合、この日は2011年の1.週に属します。
WEEK_OF_YEARフィールドに対して計算される値の範囲は1〜53です。1年の第1週は、その年から少なくともgetMinimalDaysInFirstWeek()日を含むgetFirstDayOfWeek()から始まる最も早い7日間です。したがって、getMinimalDaysInFirstWeek()、getFirstDayOfWeek()の値、および1月1日の曜日に依存します。ある年の第1週から翌年の第1週までの週には、2から52または53まで順番に番号が付けられます(必要)。
その週が2010年の最後の週なのか、2011年の最初の週なのかを判断するために、JavaはgetMinimalDaysInFirstWeek
javadocを使用します。そのメソッドが7を返す場合、その週のすべての日が同じ年である最初の週は1週目であり、1を返す場合、翌年の任意の日の最初の週は翌年の最初の週です。
この場合、2011年1月の第1週は土曜日であるため、1日の週がすでに翌年の第1週と見なされるようにしたい場合は、2011年の第1週と見なされます。次に行います:
Calendar c = Calendar.getInstance();
c.setMinimalDaysInFirstWeek(7);//anything more than 1 will work in this year
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
System.out.println( c.get( Calendar.WEEK_OF_YEAR ) );
戻り値:
52
IIRC、1月1日の日付の最初の週は第1週です。
そのため、第1週は2010年12月31日に返されます。
2011年12月31日に試してみると、52になります。
編集:週はロケール固有であり、日曜日から土曜日として定義されることもあれば、月曜日から日曜日として定義されることもあります。
これは、週の始まりがローカルに依存しているためです。
米国では、第1週は1月1日より前の日曜日に始まります。2010年は12月26日です。そのため、12月31日はまだ第1週です。
ヨーロッパでは、第1週は1月1日より前の月曜日に始まります。2010年は12月27日です。そのため、ヨーロッパでも12月31日はまだ第1週です。