Я в основном хочу получить нуль или начинающийся час в течение текущего дня.
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
Не проще, чем другие решения, но меньше строк:
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()
Вы можете использовать функцию 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)
}
Согласно документации 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