Dire che voglio che la settimana inizi il martedì e che il giorno inizi alle 5:30.Java8 java.time: come modificare il giorno della settimana e l'ora di inizio della giornata?
Ciò significa, codice come questo dovrebbe funzionare:
// LocalDateTimes created with the "standard" ISO time
LocalDateTime tuesday_4_30 = LocalDateTime.now()
.with(TemporalAdjusters.next(DayOfWeek.TUESDAY))
.withHour(4).withMinute(30);
LocalDateTime tuesday_6_30 = tuesday_4_30.withHour(6).withMinute(30);
LocalDateTime previous_monday = tuesday_4_30.minusDays(1);
// eventual adjustment using TemporalAdjusters here? like this?
// tuesday_4_30 = tuesday_4_30.with(new MyTemporalAdjuster(DayOfWeek.TUESDAY, 5, 30));
// <do the same for 6_30 and previous monday>
// or possibly change some global parameter like Chronology, Locale, or such..
Assert.assertEquals(tuesday_4_30.getDayOfWeek(), DayOfWeek.MONDAY);
Assert.assertEquals(tuesday_6_30.getDayOfWeek(), DayOfWeek.TUESDAY);
// there is 1 week between the previous monday and the next tuesday 6:30
Assert.assertEquals(ChronoUnit.WEEKS.between(previous_monday,tuesday_6_30), 1);
// there is 0 week between the previous monday and the next tuesday 4:30
Assert.assertEquals(ChronoUnit.WEEKS.between(previous_monday,tuesday_4_30), 0);
// 1 day between tuesday_4_30 and tuesday_6_30
Assert.assertEquals(ChronoUnit.DAYS.between(tuesday_4_30,tuesday_6_30), 1);
// 0 day between previous_monday and tuesday_4_30
Assert.assertEquals(ChronoUnit.DAYS.between(previous_monday,tuesday_4_30), 1);
Sono tentato di utilizzare regolatori temporali qui, e sono abbastanza sicuro che avrei potuto compensare le ore e minuti in modo che la giornata inizia alle 5: 30, ma non riesco a capire come modificare l'inizio della settimana.
Nota che ho controllato WeekFields ma non riesco a farlo funzionare con ChronoUnit.XXX.between()
, quindi non sono andato troppo lontano. Sembra che dovrei codificare la mia cronologia, che sembrava troppo acuta.
Potete aiutarmi?
Che dire di giorni tra? Il tuo codice funziona perché il mio caso funziona correttamente per entrambi. Ma suppongo che dovrei implementare gli stessi "giorni tra" come la tua "settimana tra"? – Gui13
Sì, dovresti reimplementare tutti questi metodi. Potrebbe esserci un modo migliore. – assylias