2010-12-28 4 views
1

ребята, я смущен, вызвав следующий метод: Calendar.getInstance().get(Calendar.WEEK_OF_YEAR), результат получил от этого метода не right.Here мой код:Как правильно выбрать номер недели в календаре?

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. 

Так вот вопрос, как получить нужную неделю в году с использованием экземпляра календаря?

ответ

1

Язык имеет только влияние на форматирование (т. Е. Синтаксический анализ и форматирование даты на китайском языке). Вам нужно установить часовой пояс для Китая. Закрепить Calendar#getInstance() линий следующим образом:

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

много благодаря @BalusC – George

+0

To @BalusC, CST коротка для Центрального поясного времени, Китай поясного времени или Куба поясного времени. Чтобы использовать Китайское стандартное время (CST), нам также нужна информация о локали. – George

+0

Рекомендуется использовать длинные имена часовых поясов. В этом случае «Азия/Шанхай» – eckes

1

Попробуйте это:

Calendar calendar = Calendar.getInstance(); 
calendar.setMinimalDaysInFirstWeek(4); 
Смежные вопросы