Questo post è vecchio, ma trovo la linea nella soluzione accettata un po 'lungo e ho trovato niente di meglio in ciò che esiste. Così ho fatto una piccola classe che avvolge per Data e DateTime:
public class DateTimeUtils
{
public static boolean dateIsCloseToNow(Date dateToCheck,
Duration tolerance)
{
return dateIsCloseToNow(new DateTime(dateToCheck), tolerance);
}
public static boolean dateIsCloseToNow(DateTime dateToCheck,
Duration tolerance)
{
return datesAreClose(dateToCheck, DateTime.now(), tolerance);
}
public static boolean datesAreClose(Date date1,
Date date2,
Duration tolerance)
{
return datesAreClose(new DateTime(date1), new DateTime(date2), tolerance);
}
public static boolean datesAreClose(DateTime date1,
DateTime date2,
Duration tolerance)
{
if (date1.isBefore(date2)) {
return new Duration(date1, date2).isShorterThan(tolerance);
}
return new Duration(date2, date1).isShorterThan(tolerance);
}
quindi questa linea:
new Duration(date.getTime(), System.currentTimeMillis()).isShorterThan(Duration.standardSeconds(5)
diventa:
DateUtils.dateIsCloseToNow(date, Duration.standardSeconds(5))
ho scoperto che veramente utile in casi di test di unità dove dovevo convalidare una data di creazione.
Sembra molto utile. La mia unica critica è piccola, sulla denominazione: cambierei il nome da 'data ...' a 'datetime ...' (come 'datetimesAreEqual' piuttosto che 'datesAreEqual'), solo per evitare confusione con il nome errato 'java .util.Date' e con 'LocalDate'. Potrei anche dire "AreClose" piuttosto che "AreEqual" e "IsCloseToNow" piuttosto che "IsNow". –
"IsClose" potrebbe essere più chiaro. Per il DateTime, non ne sono sicuro. Poiché entrambi i metodi accettano Data e DateTime come parametri, penso che Data sia più chiaro. Sebbene, la classe potrebbe essere rinominata in DateTimeUtils. Modifico il post – FredBoutin