2012-07-01 18 views

cevap

8

bunu kullanın:

new Duration(dt1, dt2).isShorterThan(Duration.millis(maxTolerance)) 
5

Bu mesaj eskidir, ama biraz uzun kabul çözeltide satırı bulun ve ben var ne de iyi bir şey buldum.

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); 
    } 

nedenle bu hat:

new Duration(date.getTime(), System.currentTimeMillis()).isShorterThan(Duration.standardSeconds(5) 

olur:

DateUtils.dateIsCloseToNow(date, Duration.standardSeconds(5)) 

Ben birim test durumlarda gerçekten yararlı buldum yüzden Tarih ve DateTime sarıyor küçük sınıf yaptı Bir yaratılış tarihini doğrulamaya ihtiyacım vardı.

+2

Oldukça kullanışlı görünüyor. Benim tek eleştirim, isimlendirme hakkında küçüktür: Ben 'yanlış' adı verilen 'java ile kafa karışıklığını önlemek için' tarih… 'dan' datetime '' ('dateAreEqual' yerine 'datetimesAreEqual' gibi) adlandırma değiştiririm. .util.Date' ve 'LocalDate' ile. Ayrıca 'IsNow' yerine 'AreEqual' ve 'IsCloseToNow' yerine 'AreClose' diyebilirim. –

+0

"IsClose" gerçekten daha net olabilir. DateTime için emin değilim. Yöntemlerin hem Tarih hem de Tarih Zamanını parametre olarak alması nedeniyle, Tarih'in daha net olduğunu düşünüyorum. Bununla birlikte, sınıf DateTimeUtils'e yeniden adlandırabilir. Gönderiyi düzenleyeceğim. – FredBoutin

İlgili konular