Per prima cosa, non utilizzare il pacchetto Data/Ora da Java. C'è un pacchetto di utilità molto migliore chiamato Joda-Time - scaricalo e usalo.
Per determinare se il vostro tempo è in questa settimana, la settimana scorsa, o qualsiasi settimana a tutti, fare questo:
- Creare due oggetti Intervallo - uno per la settimana scorsa e uno per questa settimana
- Usa il metodo contiene (lungo) per determinare quale intervallo contiene la data che stai cercando.
Ci sono molti modi interessanti per creare due settimane back to back. È possibile impostare una durata di una settimana, trovare l'ora di inizio per la prima settimana e creare solo due intervalli in base a tale ora di inizio. Sentiti libero di trovare qualsiasi altro modo che funzioni per te: il pacchetto ha numerosi modi per arrivare a ciò che desideri.
EDIT:
Joda-tempo può essere downloaded here, e qui è un esempio di come Joda farebbe questo:
// Get the date today, and then select midnight of the first day of the week
// Joda uses ISO weeks, so all weeks start on Monday.
// If you want to change the time zone, pass a DateTimeZone to the method toDateTimeAtStartOfDay()
DateTime midnightToday = new LocalDate().toDateTimeAtStartOfDay();
DateTime midnightMonday = midnightToday.withDayOfWeek(DateTimeConstants.MONDAY);
// If your week starts on Sunday, you need to subtract one. Adjust accordingly.
DateTime midnightSunday = midnightMonday.plusDays(-1);
DateTime midnightNextSunday = midnightSunday.plusDays(7);
DateTime midnightSundayAfter = midnightNextSunday.plusDays(7);
Interval thisWeek = new Interval(midnightSunday, midnightNextSunday);
Interval nextWeek = new Interval(midnightNextSunday, midnightSundayAfter);
if (thisWeek.contains(someDate.getTime())) System.out.println("This week");
if (nextWeek.contains(someDate.getTime())) System.out.println("Next week");
fonte
2010-12-27 06:34:34
Cosa dovrebbe succedere se il giorno corrente è domenica? –
Se oggi è domenica, è il primo giorno della settimana di 7 giorni, a partire da questa mattina 00:00 fino a domenica 00:00 di questa settimana. – Frank