2010-12-28 15 views
1

男は、私は次のような方法呼び出すことで、混乱しています:だからここでカレンダーから週番号を取得するにはどうすればよいですか?

Locale.setDefault(Locale.CHINA); 
    Calendar calendar = Calendar.getInstance(); 
    //we think Monday is the first day of a week in China,but not Sunday. 
    calendar.setFirstDayOfWeek(Calendar.MONDAY); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    String dateString = "2010-01-01"; 
    calendar.setTime(sdf.parse(dateString)); 
    System.out.println("DateString: " + dateString + ", week: " + calendar.get(Calendar.WEEK_OF_YEAR)); 
    dateString = "2010-12-27"; 
    calendar.setTime(sdf.parse(dateString)); 
    System.out.println("DateString: " + dateString + ", week: " + calendar.get(Calendar.WEEK_OF_YEAR)); 

結果が

DateString: 2010-01-01, week: 1//This may be wrong? 
DateString: 2010-12-27, week: 1//This result is definitely wrong. 

Calendar.getInstance().get(Calendar.WEEK_OF_YEAR)を、結果はそのメソッドから得たがright.Hereは私のコードですされていません質問、カレンダーインスタンスを使用して年番号の正しい週を取得する方法は?

答えて

1

ロケールは、書式設定(つまり、中国語としての日付の解析と書式設定)にのみ影響します。タイムゾーンを中国に設定する必要があります。

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CST")); // China Standard Time 
+0

たくさん@BalusCに@BalusC – George

+0

のおかげで、CSTは、中国標準時またはキューバ標準時中部標準時の略です。中国標準時(CST)を使用するには、ロケールの情報も必要です。 – George

+0

長いタイムゾーン名を使用することをお勧めします。この場合、 "アジア/上海" – eckes

1

はこのお試しください:次のようにCalendar#getInstance()ラインを修正し

Calendar calendar = Calendar.getInstance(); 
calendar.setMinimalDaysInFirstWeek(4); 
関連する問題