今年の週に問題があります。私のマシンでJDK 1.6.0.22のバージョンが別のマシン1.6.0.21にインストールされています。両方のマシンが異なる結果を返す:Javaカレンダーの問題、JDK 1.6.0.22
(1.6.0.22)週:1
(1.6.0.21)週である:このコード52
:
try {
Calendar current = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date d = df.parse("2010-12-28 19:04:38 GMT");
current.setTime(d);
int currentWeek = current.get(Calendar.WEEK_OF_YEAR);
System.out.println("week is: "currentWeek);
} catch (ParseException e) {
e.printStackTrace();
}
なぜJDK 1.6.0.22が間違った結果を出すのですか?この差が発生する可能性がありますなぜ
例:Locale.US:第1週、Locale.GERMANY:第52週。ドイツの週は月曜日に開始し、日曜日は米国で開始します。 –
権利。しかし、これについて例を挙げて説明してください。 'Locale.setDefault(Locale.US);カレンダーカレンダー= Calendar.getInstance(TimeZone.getTimeZone( "GMT")); calendar.setTime(new SimpleDateFormat( "yyyyMMdd")。parse( "20101226")); System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1 calendar.setTimeZone(TimeZone.getTimeZone( "AST")); System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 52' – BalusC
これはISと同じではないと信じています)8601規格では、「今週の01週は今年の木曜日の最初の週です。これは含まれている週に相当します言い換えれば、新年の最初の週は、新年の大半を占める週です。 " –