Java: как я проверяю, ли Дата в определенном диапазоне?

Я не мог заставить Facebook выбрать правильное изображение из определенного сообщения, поэтому я сделал то, что описано на этой странице:

https://webapps.stackexchange.com/questions/ 18468 / add-meta-tags-to-individual-blogger-posts

Другими словами, что-то вроде этого:


  
 

В принципе, вы собираетесь для жесткого кодирования инструкции if в HTML вашего сайта, чтобы заставить ее изменить мета-контент для того, что вы изменили для этого сообщения. Это грязное решение, но оно работает.

65
задан Mike Sickler 30 January 2009 в 01:31
поделиться

4 ответа

boolean isWithinRange(Date testDate) {
   return !(testDate.before(startDate) || testDate.after(endDate));
}

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

return testDate.after(startDate) && testDate.before(endDate);

, таким образом, это работало бы, даже если бы testDate был точно равен одному из случаев конца.

116
ответ дан Paul Tomblin 7 November 2019 в 11:29
поделиться

Это - корректный путь. Календари работают тот же путь. Лучшее, которое я мог предложить Вам (на основе Вашего примера) является этим:

boolean isWithinRange(Date testDate) {
    return testDate.getTime() >= startDate.getTime() &&
             testDate.getTime() <= endDate.getTime();
}

Date.getTime () возвращает количество миллисекунд с тех пор 01.01.1970 0:00:00 GMT и является длинным, таким образом, это легко сопоставимо.

12
ответ дан MBCook 7 November 2019 в 11:29
поделиться

Рассмотрите использование Время Joda . Я люблю эту библиотеку и желаю, чтобы она заменила бы текущую ужасную путаницу, которые являются существующими классами Даты и Календаря Java. Это - сделанная правильно обработка даты.

РЕДАКТИРОВАНИЕ: это больше не 2009 и Java 8 отсутствовавший целую вечность. Используйте Java 8 созданный в java.time классах, которые основаны на Времени Joda, как Basil Bourque упоминает выше. В этом случае Вы захотите класс Периода и здесь учебное руководство Oracle о том, как использовать его.

9
ответ дан Andrejs 7 November 2019 в 11:29
поделиться

Простой способ состоит в том, чтобы преобразовать даты в миллисекунды после 1 января 1970 (используйте Date.getTime ()), и затем сравнивают эти значения.

4
ответ дан Rahul 7 November 2019 в 11:29
поделиться
Другие вопросы по тегам:

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