В моем сценарии мне нужно выполнить ряд действий в диапазоне дат, учитывая дату начала и окончания.
Пожалуйста, дайте мне руководство для достижения этого с помощью Java.
for ( currentDate = starDate; currentDate < endDate; currentDate++) {
}
Я знаю, что приведенный выше код просто невозможен, но я делаю это для того, чтобы показать вам, чего я хотел бы достичь.
Ответы:
Ну, вы могли бы сделать что-то вроде этого, используя временный API Java 8 , специально для этой проблемы
java.time.LocalDate
(или эквивалентные классы Joda Time для Java 7 и старше)Я бы тщательно рекомендую использовать
java.time
(или Joda время) над встроеннымиDate
/Calendar
классами.источник
import
утверждения.Однако JodaTime хорош для полноты и / или если вы предпочитаете средства, предоставляемые API, вот стандартные подходы API.
При запуске с
java.util.Date
примерами, как показано ниже:Вот унаследованный
java.util.Calendar
подход, если вы еще не используете Java8:А вот
java.time.LocalDate
подход Java8 , в основном именно подход JodaTime:Если вы хотите выполнить итерацию включительно даты окончания, используйте
!start.after(end)
и!date.isAfter(end)
соответственно.источник
Стиль Java 8 с использованием классов java.time :
Вывод:
Альтернатива:
Java 9 добавила метод dateUntil () :
источник
По сути, это тот же ответ, который дал BalusC, но немного более читаемый с циклом while вместо цикла for:
источник
Apache Commons
источник
addDays(..)
и он станет еще короче.источник
источник
Мы можем перенести логику в различные методы для Java 7, Java 8 и Java 9 :
Тогда мы можем вызвать эти методы как:
Выход будет:
источник
Date
иCalendar
классы были вытеснены классами java.time много лет назад. Конкретно замененыInstant
иZonedDateDate
.Вот код Java 8. Я думаю, что этот код решит вашу проблему. Счастливое Кодирование
источник
Почему бы не использовать эпоху и легко пройти через нее.
источник
Вы можете написать подобный класс (реализующий интерфейс итератора) и выполнить итерацию по нему.
и используйте это как:
источник
Вы можете попробовать это:
источник
Это поможет вам начать 30 дней назад и вернуться к сегодняшней дате. Вы можете легко изменить диапазон дат и направления.
источник