Esiste un modo elegante per trovare il giorno della settimana più vicino a una determinata data utilizzando JodaTime? Inizialmente ho pensato che fosse setCopy()
, ma questo imposta il giorno per il giorno particolare nella stessa settimana. Pertanto, se ld
è 2011-11-27
e day
è "Lunedì", la seguente funzione restituisce 2011-11-21
e non 2011-11-28
come desidero.Come trovare il giorno della settimana più vicino per una data arbitraria?
// Note that "day" can be _any_ day of the week, not just weekdays.
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
return ld.dayOfWeek().setCopy(day);
}
output desiderato per vari ingressi:
2011-12-04, Monday => 2011-12-05
2011-12-04, Tuesday => 2011-12-06
2011-12-04, Wednesday => 2011-12-07
2011-12-04, Thursday => 2011-12-01
2011-12-04, Friday => 2011-12-02
2011-12-04, Saturday => 2011-12-03
2011-12-04, Sunday => 2011-12-04
2011-12-05, Monday => 2011-12-05
2011-12-05, Tuesday => 2011-12-06
2011-12-05, Wednesday => 2011-12-07
2011-12-05, Thursday => 2011-12-08
2011-12-05, Friday => 2011-12-02
2011-12-05, Saturday => 2011-12-03
2011-12-05, Sunday => 2011-12-04
Qui di seguito è un work-around sono arrivato fino a che funziona per le particolari vincoli nella mia situazione attuale, ma mi piacerebbe avere aiutare a trovare una soluzione completamente generica che funziona sempre.
LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
LocalDate target = ld.dayOfWeek().setCopy(day);
if (ld.getDayOfWeek() > DateTimeConstants.SATURDAY) {
target = target.plusWeeks(1);
}
return target;
}
possibile duplicato del [Joda-Time:? Come ottenere il prossimo venerdì] (http://stackoverflow.com/questions/1636038/joda-time- how-to-get-the-next-venerdì) –
Io non la penso così. Quello trova il giorno _next_, ma mi piacerebbe trovare il giorno più difficile. –
È necessario definire cosa si intende per "più vicino" e "giorno della settimana" per essere in grado di fornire la risposta corretta. Forse una tabella di input attesi da produrre? – JodaStephen