2017-11-30 111 views
8

Nanocconds'ı düşünmeden 2 LocalDateTime nesnesini karşılaştırmak istiyorum. Şu anda böyle yapıyorum. Bunu yapmanın daha iyi bir yolu var mı?Yerel dateTime'yı nano saniye olmadan java 8 ile karşılaştırın 8

LocalDateTime object1 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12000); 
LocalDateTime object2 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12004); 

System.out.println(object1.isEqual(object2)); // false 

LocalDateTime objec1tWithoutNano = object1.minusNanos(object1.getNano()); 
LocalDateTime objec2tWithoutNano = object2.minusNanos(object2.getNano()); 

System.out.println(objec1tWithoutNano.isEqual(objec2tWithoutNano)); // true 

cevap

6

LocalDateTime API'si içinde yöntemlerin çoğu zaten her yöntem çağırma üzerinde yeni bir örneğini iade olarak eğer varsa minimal bir performans açığı var bu yüzden sizin için en okunabilir ne olursa olsun yaklaşımı devam tavsiye ederim eldeki görevi yerine getirebileceğiniz farklı yollar arasında. Örneğin, truncateTo, örneğinizle aynı sonucu minusNanos:

System.out.println(object1.truncatedTo(ChronoUnit.SECONDS) 
    .isEqual(object2.truncatedTo(ChronoUnit.SECONDS))); 
kullanımıyla döndürmek için kullanılabilir