Сравнение двух java.util.Dates, чтобы видеть, находятся ли они в тот же день - PullRequest
221 голосов
/ 25 марта 2010

Мне нужно сравнить два Date с (например, date1 и date2) и получить boolean sameDay, которое верно для двух Date акций в один и тот же день, и ложь, если они нет.

Как я могу это сделать? Кажется, здесь вихрь путаницы ... и я бы хотел, если это вообще возможно, избежать других зависимостей за пределами JDK.

, чтобы уточнить: , если date1 и date2 имеют один и тот же год, месяц и день, тогда sameDay - это истина, в противном случае - ложь. Я понимаю, что для этого требуется знание часового пояса ... было бы неплохо перейти в часовой пояс, но я могу жить либо по Гринвичу, либо по местному времени, пока я знаю, каково это поведение.

еще раз, чтобы уточнить:

date1 = 2008 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
  => sameDate = true

date1 = 2009 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
  => sameDate = false

date1 = 2008 Aug 03 12:00:00
date2 = 2008 Jun 03 12:00:00
  => sameDate = false

Ответы [ 12 ]

0 голосов
/ 12 мая 2019

Для разработчиков Kotlin это версия со сравнением форматированных строк:

val sdf = SimpleDateFormat("yyMMdd")
if (sdf.format(date1) == sdf.format(date2)) {
    // same day
}

Это не лучший способ, но он короткий и работает.

0 голосов
/ 02 ноября 2011

вы можете применять ту же логику, что и решение SimpleDateFormat, не полагаясь на SimpleDateFormat

date1.getFullYear()*10000 + date1.getMonth()*100 + date1.getDate() == 
date2.getFullYear()*10000 + date2.getMonth()*100 + date2.getDate()
...