本文將為您介紹 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í)間字段:
日期和時(shí)間的計(jì)算方法:
5、 總結(jié)
通過本文的介紹,大致地了解了 Java 中獲取日期和時(shí)間的方法,以及使用 Java 8 中全新 API 來獲取日期和時(shí)間。想要知道更多有關(guān) Java 的內(nèi)容,請(qǐng)關(guān)注 W3CSchool和 編程獅APP。