1. 程式人生 > 其它 >java如何獲取當前日期和時間

java如何獲取當前日期和時間

本篇部落格主要總結java裡面關於獲取當前時間的一些方法

一、System.currentTimeMillis()

獲取標準時間可以通過System.currentTimeMillis()方法獲取,此方法不受時區影響,得到的結果是時間戳格式的。例如:

1543105352845 

我們可以將時間戳轉化成我們易於理解的格式

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
Date date = new Date(System.currentTimeMillis());
System.out.println(formatter.format(date));

則該時間戳對應的時間為:

2018-11-25 at 01:22:12 CET

值得注意的是,此方法會根據我們的系統時間返回當前值,因為世界各地的時區是不一樣的。

二、java.util.Date

在Java中,獲取當前日期最簡單的方法之一就是直接例項化位於Java包java.util的Date類。

Date date = new Date(); 

上面獲取到的日期也可以被format成我們需要的格式,例如:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");  
System.out.println(formatter.format(date)); 

三、Calendar API

Calendar類,專門用於轉換特定時刻和日曆欄位之間的日期和時間。

使用Calendar 獲取當前日期和時間非常簡單:

Calendar calendar = Calendar.getInstance(); 

與date一樣,我們也可以非常輕鬆地format這個日期成我們需要的格式

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");  
System.out.println(formatter.format(calendar.getTime()));  

上面程式碼列印的結果如下:

25-11-2018 00:43:39

四、Date/Time API

Java 8提供了一個全新的API,用以替換java.util.Date和java.util.Calendar。Date / Time API提供了多個類,幫助我們來完成工作,包括:

  • LocalDate

  • LocalTime

  • LocalDateTime

  • ZonedDateTime

  • LocalDate

  • LocalDate只是一個日期,沒有時間。 這意味著我們只能獲得當前日期,但沒有一天的具體時間。

    LocalDate date = LocalDate.now(); 
    

    我們可以format它

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");  
    System.out.println(date.format(formatter));
    

    得到的結果只有年月日,例如:

    25-11-2018 
    
  • LocalTime

  • LocalTime與LocalDate相反,它只代表一個時間,沒有日期。 這意味著我們只能獲得當天的當前時間,而不是實際日期:

    LocalTime time = LocalTime.now(); // get the current time
    

    可以按如下方式format

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");  
    System.out.println(time.format(formatter)); 
    

    得到的結果類似如下:

    00:55:58  
    
  • LocalDateTime

    最後一個是LocalDateTime,也是Java中最常用的Date / Time類,代表前兩個類的組合 - 即日期和時間的值:

    LocalDateTime dateTime = LocalDateTime.now(); 
    

    format的方式也一樣

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");  
    System.out.println(dateTime.format(formatter));  
    

    得到的日期結果類似於:

    25-11-2018 00:57:20  
    
~~~