2016-06-05 4 views
1

Я пытаюсь получить номер недели для даты, В моей стране неделя начинается в воскресенье, поэтому число недель 6/5/2016 является 23, но это возвращение 22, потому что неделя ISO в JAVA начинается с понедельника, я использовал следующие методы, но он не работаетполучите номер недели в году, где первый день недели - воскресенье

mCalendar = Calendar.getInstance(); 
    int weekNum = mCalendar.get(Calendar.WEEK_OF_YEAR); //returns 22 I need 23 
// I have tried the following method but it has no effect 
mCalendar.setFirstDayOfWeek(Calendar.SUNDAY); 

к сведению, что я не могу использовать класс времени, я могу использовать только Java 7

+0

FYI, большая часть функциональности java.time встроенного в Java 8, а затем снова портированы на Java 6 и 7 в [ ThreeTen-Extra] (Http: //www.threeten .org/threetenbp /). Далее адаптирован для Android в [ThreeTenABP] (https://github.com/JakeWharton/ThreeTenABP). –

ответ

0

Я просто понял, как изменить его вам нужно создать две вещи 1-первый день недели 2-минимальный день недели

setFirstDayOfWeek(Calendar.SUNDAY);  
setMinimalDaysInFirstWeek(7); 

это покажет календарь, чтобы сделать кулак день воскресенье и 7 дней в неделю минимальная

0

Я не знаю, откуда вы, но Java имеет удивительный календарь, который позволяет следующее:

Calendar calendar = Calendar.getInstance(Locale.TRADITIONAL_CHINESE); 
int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); 
System.out.println("Number of week: " + weekNumber); 
// produces 24 

Calendar calendar = Calendar.getInstance(Locale.UK); 
int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); 
System.out.println("Number of week: " + weekNumber); 
// produces 22 

Вы можете использовать константы локали, чтобы указать свое местоположение, и я думаю, что вы получите нужное количество недель.

Редактировать: Теперь я вижу отказ в коде. Обратите внимание, что Java работает сверху до кнопки вашего кода:

Calendar calendar = Calendar.getInstance(); 
// First set the first day of the week ... 
calendar.setFirstDayOfWeek(Calendar.SUNDAY); 
// ... and than you could ask the calendar for the week 
int weekNumber = calendar.get(Calendar.WEEK_OF_YEAR); 
// will produce 23 
System.out.println("Number of week: " + weekNumber); 
+0

Я пробовал этот вариант, но он не работает Мне нужно 23 – tamtom

+0

Извините, я вижу свою ошибку немного допоздна. Я отредактировал свой пост, чтобы на ваш вопрос ответили. –

0

Я не знаю, где вы находитесь. Я французский и отлично работает следующим образом:

Calendar mCalendar = Calendar.getInstance(Locale.FRANCE); 
mCalendar.setFirstDayOfWeek(Calendar.SUNDAY); 
int weekNum = mCalendar.get(Calendar.WEEK_OF_YEAR); 
System.out.println(weekNum); // --> 23 
0
  1. Получить текущий момент.
    Смотрите этот вопрос: How to initialize a variable of type date in Java?
  2. Определите первое воскресенье года.
    Обращается полностью в этом вопросе: How to get all the Sunday's of a year
  3. Подсчет недель между этим первым воскресеньем и текущим моментом.
    Смотрите Вопрос: Get the number of weeks between two Dates
Смежные вопросы