App下載

Java如何獲取當(dāng)前日期和時間?

猿友 2021-07-14 09:38:16 瀏覽數(shù) (32259)
反饋

本文將為您介紹 Java 中關(guān)于日期和時間獲取的方法,以及介紹 Java 8 中獲取日期和時間的全新API。

1、  System.currentTimeMillis()

獲取標(biāo)準(zhǔn)時間可以使用 System.currentTimeMillis() 方法來獲取,此方法優(yōu)勢是不受時區(qū)的影響,但是得到結(jié)果是時間戳的格式,如:

1543105352845 

可以通過代碼將時間戳轉(zhuǎn)化為我們可以理解的格式:

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

則該時間戳對應(yīng)的時間為:

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

【注】該方法會根據(jù)我們的系統(tǒng)時間來返回當(dāng)前值,因?yàn)槭澜绺鞯氐臅r區(qū)是不同的。

2、  Java.util.Date

在Java中,獲取當(dāng)前日期最簡單的方法之一就是直接實(shí)例化位于 Java 包 Java.util 的 Date 類。

Date date = new Date(); // this object contains the current date value 

上面獲取的日期也可以通過 format 轉(zhuǎn)換成我們所需要的格式,如:

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

3、  Calendar API

Calendar 類,是專門用來轉(zhuǎn)換特定時刻和日歷字段之間的日期和時間。

使用 Calendar 獲取當(dāng)前日期和時間:

Calendar calendar = Calendar.getInstance(); // get current instance of the calendar

與 date 一樣,我們也可以通過 format 轉(zhuǎn)化我們所需要的格式:

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

打印結(jié)果:

25-11-2018 00:43:39

4、 Date/Time API

Java 8 提供了一個全新的 API ,用來替換 Java.util.Date 和 Java.util.Calendar。

Date/Time API 提供了多個類,幫助我們完成工作,包括以下內(nèi)容:

  •  LocalDate
  •  LocalTime
  •  LocalDateTime
  •  ZonedDateTime

4.1 LocalDate

LocalDate 一般只顯示日期,沒有時間。這意味著我們只能獲取當(dāng)前日期,但沒有一天的具體時間。

LocalDate date = LocalDate.now(); // get the current date 

我們可以通過format來轉(zhuǎn)換它:

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

就得到了以下結(jié)果,但只有年月日:

25-11-2018 

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

得到結(jié)果,只有時間,沒有日期:

00:55:58 

4.3 LocalDateTime

LocalDateTime 顧名思義,就是將以上兩者聯(lián)系起來,即可以獲取日期,又可以獲取時間。因此, LocalDateTime 是Java中最常用的 Date/Time 類。

LocalDateTime dateTime = LocalDateTime.now(); // get the current date and time 

一樣的format方式:

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

得到結(jié)果:

25-11-2018 00:57:20 

4.3 ZonedDateTime

ZoneDateTime 在 Java 8 日期時間 API 的類表示日期和時間時區(qū)信息。ZonedDateTime 一般是不可改變的,這意味著該類的對象執(zhí)行計(jì)算的所有方法都會返回一個新的 ZonedDateTime 實(shí)例:

創(chuàng)建方式:

ZonedDateTime ZonedDateTime = ZonedDateTime.now();

可以通過以下方法訪問實(shí)例的日期和時間字段:

圖片3

日期和時間的計(jì)算方法:

圖片2

5、 總結(jié)

通過本文的介紹,大致地了解了 Java 中獲取日期和時間的方法,以及使用 Java 8 中全新 API 來獲取日期和時間。想要知道更多有關(guān) Java 的內(nèi)容,請關(guān)注 W3CSchool編程獅APP。


0 人點(diǎn)贊