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

Я в основном хочу получить нуль или начинающийся час в течение текущего дня.

def today = Calendar.instance
today.set(Calendar.HOUR_OF_DAY, 0)
today.set(Calendar.MINUTE, 0)
today.set(Calendar.SECOND, 0)
println today // Mon Mar 15 00:00:00 SGT 2010
8
задан Teo Choong Ping 15 March 2010 в 09:03
поделиться

3 ответа

Не проще, чем другие решения, но меньше строк:

def now = new GregorianCalendar()
def today = new GregorianCalendar(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH))
println today.getTime()
8
ответ дан 5 December 2019 в 10:02
поделиться

Вы можете использовать функцию clearTime() Calendar в Groovy:

def calendar = Calendar.instance
calendar.with {
  clearTime()
  println time
}

Было бы неплохо иметь удобный метод, который очищает временную часть java.util.Date и/или java.util.Calendar.
Существует множество случаев использования, когда имеет смысл сравнивать месяц / день / год только части календаря или даты. По сути, он будет выполнять следующее в Календаре:

void clearTime() {
    clear(Calendar.HOUR_OF_DAY)
    clear(Calendar.HOUR)
    clear(Calendar.MINUTE)
    clear(Calendar.SECOND)
    clear(Calendar.MILLISECOND) 
 }
5
ответ дан 5 December 2019 в 10:02
поделиться

Согласно документации Groovy date , кажется, что это оптимальный способ.

Однако, используя Groovy с ключевым словом , вы можете немного сжать свои операторы

def today = Calendar.instance
with(today) {
    set Calendar.HOUR_OF_DAY, 0
    set Calendar.MINUTE, 0
    set Calendar.SECOND, 0
}
println today // Mon Mar 15 00:00:00 SGT 2010
1
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

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