#java
#java
Вопрос:
Давайте посмотрим на следующий фрагмент кода на Java.
package demo;
import java.util.Calendar;
final public class Main
{
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
cal.set(2011, 11, 11); //Setting a date to itself.
System.out.println(cal.get(Calendar.YEAR) " "
cal.get(Calendar.WEEK_OF_YEAR) "
" cal.get(Calendar.DAY_OF_YEAR));
}
}
В приведенном выше простом коде я временно (и явно) устанавливаю текущую дату самой по себе, которая равна 2011-11-11, используя метод cal.set(2011, 11, 11);
. Соответственно, я получаю выходные данные 2011 51 345, текущего 2011 года, 51 недели в году и 345 дня в году.
Когда я оставляю комментарий к этой строке, которая является cal.set(2011, 11, 11);
, я получаю результат, 2011 46 315 текущий год, текущую неделю года и текущий день года соответственно, который отличается от предыдущего результата.
[Здесь я не устанавливаю никакой даты. Оператор cal.set(2011, 11, 11);
в приведенном выше коде закомментирован, и система автоматически извлекает текущую дату, которая является 2011-11-11].
В обоих случаях используется одна и та же дата, которая является 2011-11-11, но полученный результат отличается в обоих случаях. Почему?
Ответ №1:
Значение месяца основано на 0. Если вы имели в виду ноябрь, используйте:
cal.set(2011, 10, 11);
Смотрите javadocs Calendar.
Ответ №2:
Месяц в Java индексируется как ноль. Вы устанавливаете его на 11 декабря, когда выбираете 11 месяц.