В чем разница между Calendar.WEEK_OF_MONTH и Calendar.DAY_OF_WEEK_IN_MONTH в классе календаря Java? - PullRequest
13 голосов
/ 30 июня 2011

Класс календаря Java предусматривает два поля: WEEK_OF_MONTH и DAY_OF_WEEK_IN_MONTH. Может кто-нибудь объяснить мне разницу? Кажется, что они оба возвращают одно и то же значение при тестировании с использованием приведенного ниже кода:

Calendar date = Calendar.getInstance();
date.set(2011,5,29);
int weekNo1 = date.get(Calendar.WEEK_OF_MONTH);
int weekNo2 = date.get(Calendar.DAY_OF_WEEK_IN_MONTH);

Ответы [ 4 ]

17 голосов
/ 21 декабря 2016
  • Calendar.WEEK_OF_MONTH просто возвращает "Номер текущей недели в текущем месяце"
  • Calendar.DAY_OF_WEEK просто возвращает «Номер текущего дня текущей недели, начинающейся в последнее воскресенье»
  • Calendar.DAY_OF_WEEK_IN_MONTH возвращает «N, если текущим днем ​​является N-й день месяца» скажем "3, если сегодня третья среда в месяце"

Итак, я пишу это 21 декабря 2016 года:

enter image description here

И вот что я получаю:

Calendar today = Calendar.getInstance();
System.out.println(today.get(Calendar.DAY_OF_WEEK));          //outputs 4, as today is 4th day in this week which started on 18
System.out.println(today.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //outputs 3, as today is "3rd Wednesday of this month". Earlier two wednesday were on 7th and 14th
System.out.println(today.get(Calendar.WEEK_OF_MONTH));        //outputs 4, as currently 4th week of a month is running
17 голосов
/ 12 декабря 2013

Разница в том, что DAY_OF_WEEK_IN_MONTH предоставляет количество раз, когда день недели происходил в течение месяца, а WEEK_OF_MONTH просто возвращает номер недели в текущем месяце.Подумайте об этом так: если месяц начинается в среду, первый понедельник наступит в течение второй недели месяца.Значение для DAY_OF_WEEK_IN_MONTH для этого понедельника будет равно 1, а WEEK_OF_MONTH будет равно 2.

9 голосов
/ 23 октября 2012

Мне показалось, что все другие документы сбивают с толку, поэтому для всех разработчиков Microsoft, таких как я, этот вопрос может быть понятен вам, как и мне:* Константа, представляющая значение, сколько раз данный день произошел в месяце.

1 голос
/ 30 июня 2011

Неделя месяца - это неделя в текущем месяце, начиная с воскресенья, сколько недель было.

День недели месяца - это день, когда 5 будет четверг, 1 воскресенье и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...