2017-02-13 68 views
-2

我正在比較兩個日期的比較(新老)什麼是以前好方法()或isBefore(),而由這兩個辦法日期

public static void main(String[] args) throws ParseException { 
    // TODO Auto-generated method stub 
    long startTime1= Calendar.getInstance().getTimeInMillis(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date1 = sdf.parse("2009-12-31"); 
    Date date2 = sdf.parse("2010-01-31"); 
    if(date1.before(date2)){ 
     System.out.println("date1 is before d2"); 
    } 
    long endTime1= Calendar.getInstance().getTimeInMillis(); 
    long totalTime1 =endTime1-startTime1; 
    System.out.println(totalTime1); 

    long startTime2= Calendar.getInstance().getTimeInMillis(); 
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 
    LocalDate localDate1 = LocalDate.parse("2009-12-31",formatter); 
    LocalDate localDate2 = LocalDate.parse("2010-01-31",formatter); 
    if(localDate1.isBefore(localDate2)){ 
     System.out.println("date1 is before d2"); 
    } 
    long endTime2= Calendar.getInstance().getTimeInMillis(); 
    long totalTime2 =endTime2-startTime2; 
    System.out.println(totalTime2); 


} 

輸出:

date1 is before d2 
17//for using before 
date1 is before d2 
68//for using isBefore 

所以比較最好的方法是什麼,因爲之前需要更多的時間然後之前方法,但是之前來到java 8任何人都可以告訴我們什麼時候使用isBefore?

我還檢查,但我希望在性能的情況下知道

比較日期時

Should I use java.util.Date or switch to java.time.LocalDate

+5

這絕對不是測量性能的最佳方法... – Andremoniy

+0

所以當我們使用isBefore()時? @Andremoniy –

+1

當你使用'java.time.LocalDate'時,你使用'isBefore()',當你使用'java.util.Date'時你使用'before()' – Selim

回答

0

ChronoUnit更爲高效。 下面是其中可以使用例如:

LocalDateTime timeNow = LocalDateTime.now(); 
    LocalDateTime timeAfterSometime = timeNow.plusHours(4).plusMinutes(11); 

    System.out.println("timeNow = "+timeNow); 
    System.out.println("timeAfterSometime = "+timeAfterSometime); 

    long minutesDiff = ChronoUnit.MINUTES.between(timeNow, timeAfterSometime); // 251 
    long hoursDiff = ChronoUnit.HOURS.between(timeNow, timeAfterSometime); // 4 

    System.out.println("minutesDiff = "+minutesDiff); 
    System.out.println("hoursDiff = "+hoursDiff); 

和輸出將是如下:

timeNow = 2017-02-13T16:05:00.617 timeAfterSometime = 2017-02-13T20 :16:00.617 minutesDiff = 251 hoursDiff = 4

+0

對不起,但我的senerio是不同的感謝努力 –

4

使用新的。 LocalDate,LocalTimeLocalDateTime都是不可變的,並且是線程安全的。他們更安全使用。

+0

謝謝@Eric建議意味着你說在LocalDate日期比較不安全之前 –

+2

@jitendravarshney這裏的意思是新的API('java.time')很多,很多('java.util.Date')更好。如果使用Java 8,則不再使用java.time而不使用java.util.Date或java.util.Calendar。 –

+0

ok @OlivierGrégoireJava8 DateTimeFormatter與舊日期比較有很大的功能 –

相關問題