Je veux créer un intervalle entre le début de la semaine et la fin de la semaine en cours.
J'ai le code suivant, emprunté à cette réponse :
private LocalDateTime calcNextSunday(LocalDateTime d) {
if (d.getDayOfWeek() > DateTimeConstants.SUNDAY) {
d = d.plusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.SUNDAY);
}
private LocalDateTime calcPreviousMonday(LocalDateTime d) {
if (d.getDayOfWeek() < DateTimeConstants.MONDAY) {
d = d.minusWeeks(1);
}
return d.withDayOfWeek(DateTimeConstants.MONDAY);
}
Mais maintenant, je veux que le lundi LocalDateTime
soit à 00:00:00 et le dimanche LocalDateTime
à 23:59:59. Comment je ferais ça?
Que diriez-vous:
private LocalDateTime calcNextSunday(LocalDateTime d) {
return d.withHourOfDay(23).withMinuteOfHour(59).withSecondOfMinute(59).withDayOfWeek(DateTimeConstants.SUNDAY);
}
private LocalDateTime calcPreviousMonday(final LocalDateTime d) {
return d.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withDayOfWeek(DateTimeConstants.MONDAY);
}
Vous pouvez utiliser la méthode withTime
:
d.withTime(0, 0, 0, 0);
d.withTime(23, 59, 59, 999);
Identique à la réponse de Peter, mais plus courte.
Pour ceux qui viennent ici à la recherche de la réponse pour "js-joda", vous pouvez utiliser les méthodes suivantes à partir de LocalDate:
atStartOfDay(): LocalDateTime
atStartOfDay(zone: ZoneId): ZonedDateTime
atStartOfDayWithZone(zone: ZoneId): ZonedDateTime
Références: https://js-joda.github.io/js-joda/class/src/LocalDate.js~LocalDate.html#instance-method-atStartOfDayWithZone