@junior_android

Как проверить дату на валидность?

Использую LocalDateTime для работы с датой. Стоит задача проверить дату по нескольким условиям

- Является ли текущая дата число, месяц, год сегодняшней
- Является ли текущая дата число, месяц, год прошедшей
- Принадлежит ли текущая дата к диапазону дат сегодняшняя дата + 1 день ... сегодняшняя дата + 7 дней(т.е ближайшая неделя)

Написал такой вот код. А как бы вы это сделали? Метод isExpired, isToday работают почему-то неправильно.

object DateUtils {
    fun isToday(beginDate: String): Boolean {
       val begin = LocalDateTime.parse(beginDate)
       val today = LocalDateTime.now()
       return today == begin
    }

    fun isWithingNearestWeek(beginDate: String): Boolean {
        val currentDate = LocalDateTime.parse(beginDate)
        val beginWeekDate = LocalDateTime.now().plusDays(1)
        val endWeekDate = LocalDateTime.now().plusDays(7)
        return currentDate in beginWeekDate..endWeekDate
    }

    fun isExpired(beginDate: String): Boolean {
        val currentDate = LocalDateTime.parse(beginDate)
        val todayDate = LocalDateTime.now()
        return currentDate.isAfter(todayDate)
    }
}
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
evsmusic
@evsmusic
пользуюсь давно вот такой штукой https://www.joda.org/joda-time/ т.к. под андроидом LocalDateTime поздно появился, в целом синтаксис похож

пример:
object DateHelper {
  // immutable result
  private fun dateOnly(d: DateTime): DateTime {
    return d.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfDay(0)
  }

  fun isToday(dateSrc: String): Boolean {
    val date = DateTime.parse(dateSrc)
    return dateOnly(date) == dateOnly(DateTime())
  }

  fun isExpired(maxDate: DateTime) {
    return d.isBeforeNow
  }

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы