Как получить конец дня, когда дается LocalDate?
Как получить конец дня, когда дано LocalDate?
я мог бы получить его, сделав
LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59));
но есть ли эквивалентный метод "atStartOfDay" для конца дня?
LocalDate.now().atStartOfDay();
LocalDate.now().atEndOfDay(); //doesn't work
3 ответов
вот несколько вариантов, в зависимости от того, что вам нужно:
LocalDate.now().atTime(23, 59, 59); //23:59:59
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
но нет встроенного метода.
Как прокомментировал @JBNizet, если вы хотите создать интервал, вы также можете использовать интервал до полуночи, эксклюзив.
это варианты, доступные в LocalTime
, уведомление MIDNIGHT
и MIN
равны.
LocalDate.now().atTime(LocalTime.MIDNIGHT); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.MIN); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.NOON); //12:00:00.000000000
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
Для справки, это внедрение в java.time.LocalTime
/**
* Constants for the local time of each hour.
*/
private static final LocalTime[] HOURS = new LocalTime[24];
static {
for (int i = 0; i < HOURS.length; i++) {
HOURS[i] = new LocalTime(i, 0, 0, 0);
}
MIDNIGHT = HOURS[0];
NOON = HOURS[12];
MIN = HOURS[0];
MAX = new LocalTime(23, 59, 59, 999_999_999);
}
начало следующего дня и вычесть из него 1 секунду. Это должно сработать для тебя. :
public static void main(String[] args) {
LocalDate date = LocalDate.now();
LocalDateTime dt = date.atStartOfDay().plusDays(1).minusSeconds(1);
System.out.println(dt);
}
O /P:
2016-04-04T23:59:59