Java Calendar.set (Календарь. DAY_OF_WEEK, Календарь. В ВОСКРЕСЕНЬЕ), это прокрутится назад, вперед или неизвестный?

Я должен сказать, это - одна область, где Eclipse действительно слаб. А именно, импорт/экспорт предпочтений относится ко ВСЕМ предпочтениям. Нет никакого способа импортировать, говорят просто, что шрифты/цветовые настройки (как Вы может с Visual Studio), не пачкая мои предпочтения привязки клавиш.

кроме того, я попробовал несколько из этих предпочтительных файлов, на которые ссылаются выше, и они полностью повреждают мою установку Eclipse.

27
задан Will 23 August 2009 в 20:30
поделиться

4 ответа

Он всегда должен оставаться неизменным WEEK_OF_MONTH ( http://java.sun.com/j2se/1.4.2/docs/api/java/util /Calendar.html#WEEK_OF_MONTH). Из документации:

При установке или получении Поля WEEK_OF_MONTH или WEEK_OF_YEAR, Календарь должен определять первую неделю месяца или года в качестве справки точка. Первая неделя месяца или год определяется как самые ранние семь дневной период, начинающийся getFirstDayOfWeek () и содержащий at минимум getMinimalDaysInFirstWeek () дней того месяца или года. Недели сочтены ..., -1, 0 предшествуют первой неделе; недели пронумерованы 2, 3, ... Обратите внимание, что нормализованная нумерация возвращаемый get () может быть другим. Например, конкретный Календарь подкласс может обозначать неделю до неделя 1 года как неделя n в прошлом году.

11
ответ дан 28 November 2019 в 05:44
поделиться

Из Javadoc :

Если есть какой-либо конфликт в значениях календарных полей, Calendar дает приоритеты календарным полям, которые были установлены позже. Ниже приведены комбинации полей календаря по умолчанию. Будет использоваться самая последняя комбинация, определенная самым последним установленным отдельным полем.

Для полей даты:

 YEAR + MONTH + DAY_OF_MONTH
 YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
 YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
 YEAR + DAY_OF_YEAR
 YEAR + DAY_OF_WEEK + WEEK_OF_YEAR

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

1
ответ дан 28 November 2019 в 05:44
поделиться

следующая формула возвращает «текущий» день недели в диапазоне [0; 6]

(d + numberOfDaysInAWeek - firstDayOfWeek) % numberOfDaysInAWeek

или прибавляет 1, если вы хотите диапазон [1; 7]

(d + numberOfDaysInAWeek - firstDayOfWeek) % numberOfDaysInAWeek + 1

d - это то, что Calendar.get (Calendar.DAY_OF_WEEK) возвращает

, чтобы получить первый день недели, вычесть результат формулы из текущей даты. Следующий код выполняет это:

final int currentDayOfWeek = (calendar.get(Calendar.DAY_OF_WEEK) + 7 - cal.getFirstDayOfWeek()) % 7;
cal.add(Calendar.DAY_OF_YEAR, -currentDayOfWeek);
8
ответ дан 28 November 2019 в 05:44
поделиться

Вам также следует проверить, какой день в неделе является первым. Я также думал, что это всегда воскресенье, но это зависит от местных настроек, и в моем случае понедельник является первым днем недели. Установка воскресенья в качестве первого дня недели устранила мою проблему.

0
ответ дан 28 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: