Comment obtenir la fin de la journée lorsqu'on lui donne un LocalDate?
Comment obtenir la fin de la journée lorsqu'on lui donne un LocalDate?
Je pourrais l'obtenir en faisant
LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59));
Mais existe-t-il une méthode 'atStartOfDay' équivalente pour la fin de la journée?
LocalDate.now().atStartOfDay();
LocalDate.now().atEndOfDay(); //doesn't work
25
demandé sur
cooxie
2016-04-04 19:57:29
3 réponses
Voici quelques alternatives, en fonction de ce dont vous avez besoin:
LocalDate.now().atTime(23, 59, 59); //23:59:59
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
Mais il n'y a pas de méthode intégrée.
Comme indiqué par @JBNizet, si vous souhaitez créer un intervalle, vous pouvez également utiliser un intervalle jusqu'à minuit, exclusif.
45
répondu
assylias
2016-04-04 17:07:12
Ce sont les variantes disponibles dans LocalTime
, avis MIDNIGHT
et MIN
sont égaux.
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
Pour référence, c'est l'implémentation dans 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);
}
6
répondu
Robert Hunt
2018-01-04 15:07:16
Obtenez le début du lendemain et soustrayez-en 1 seconde. Cela devrait fonctionner pour vous. :
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
5
répondu
TheLostMind
2016-04-04 17:01:07