Java почему значение calendar afieldset равно false?

#java #calendar

#java #Календарь

Вопрос:

Я использую java calendar. Когда я меняю дату с помощью calendar.set (…), я вижу в отладчике

 areFieldSet=false. 
  

Как я могу сделать его равным true?
Потому что, когда я спрашиваю дату — я получаю неверное значение.
Спасибо.

Комментарии:

1. Пожалуйста, опубликуйте SSCCE

2. Я подозреваю, что у вас другая проблема, которая не имеет к этому никакого отношения — если вы можете опубликовать короткую, но полную программу, которая демонстрирует проблему, с которой вы действительно столкнулись, мы сможем ее решить… (Легко ошибиться в расчетах календаря, и было бы гораздо лучше показать нам, что вы делаете, чем гадать о причине.)

Ответ №1:

Обычно вам не нужно заботиться об этом. Но в любом случае, вызов любого метода, для которого необходимо задать поля, например calendar.get(0) , сделает это поле true .

Ответ №2:

Вызов соответствующего get метода приведет к пересчету полей — но почему вас это волнует? Если вы просто используете общедоступный API, вас не должно волновать это поле.

Кроме того, вы можете захотеть взглянуть на библиотеку Joda Time как на намного более совершенный API для обработки даты и времени для Java.

Ответ №3:

JavaDoc в этом поле:

Верно, если поля[] синхронизированы с текущим установленным временем. Если false, то следующая попытка получить значение поля приведет к пересчету всех полей из текущего значения времени.

Поскольку это внутреннее поле, вам не стоит беспокоиться об этом.