App下載

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

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

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

1、  System.currentTimeMillis()

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

1543105352845 

可以通過代碼將時(shí)間戳轉(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));

則該時(shí)間戳對(duì)應(yīng)的時(shí)間為:

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

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

2、  Java.util.Date

在Java中,獲取當(dāng)前日期最簡(jiǎn)單的方法之一就是直接實(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)換特定時(shí)刻和日歷字段之間的日期和時(shí)間。

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

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 提供了一個(gè)全新的 API ,用來替換 Java.util.Date 和 Java.util.Calendar。

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

  •  LocalDate
  •  LocalTime
  •  LocalDateTime
  •  ZonedDateTime

4.1 LocalDate

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

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 相反,它只能獲取時(shí)間,而不能獲取日期。

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

通過以下方式format:

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

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

00:55:58 

4.3 LocalDateTime

LocalDateTime 顧名思義,就是將以上兩者聯(lián)系起來,即可以獲取日期,又可以獲取時(shí)間。因此, 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 日期時(shí)間 API 的類表示日期和時(shí)間時(shí)區(qū)信息。ZonedDateTime 一般是不可改變的,這意味著該類的對(duì)象執(zhí)行計(jì)算的所有方法都會(huì)返回一個(gè)新的 ZonedDateTime 實(shí)例:

創(chuàng)建方式:

ZonedDateTime ZonedDateTime = ZonedDateTime.now();

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

圖片3

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

圖片2

5、 總結(jié)

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


0 人點(diǎn)贊