推薦使用 java.time 包處理 Java 8 及以上版本中的日期和時(shí)間。1. LocalDate 和 LocalTime 用于不帶時(shí)區(qū)的日期和時(shí)間,分別如 2025-04-05 和 14:30:45;2. 使用 now() 獲取當(dāng)前日期或時(shí)間,of() 創(chuàng)建指定日期或時(shí)間;3. 常見操作包括加減天數(shù)、月份等,且對象不可變,每次操作返回新實(shí)例;4. LocalDateTime 結(jié)合日期與時(shí)間但無時(shí)區(qū),ZonedDateTime 支持時(shí)區(qū);5. 使用 ZoneId 定義時(shí)區(qū)并通過 atZone() 轉(zhuǎn)換,用 withZoneSameInstant() 實(shí)現(xiàn)時(shí)區(qū)轉(zhuǎn)換;6. Duration 計(jì)算時(shí)間差,Period 計(jì)算日期差,ChronoUnit 可獲取精確差值;7. DateTimeFormatter 用于格式化與解析,注意模式字符串需與輸入一致。熟悉這些核心類及轉(zhuǎn)換方式即可應(yīng)對多數(shù)業(yè)務(wù)場景。
處理 Java 8 及以上版本中的日期和時(shí)間,推薦使用 java.time
包。這個(gè)包是 JSR-310 的一部分,替代了老舊的 Date
和 Calendar
類,提供了更清晰、更易用的 API。

LocalDate 和 LocalTime:處理日期和時(shí)間的基礎(chǔ)
LocalDate
表示一個(gè)不帶時(shí)區(qū)的日期,比如 2025-04-05;LocalTime
表示一個(gè)不帶時(shí)區(qū)的時(shí)間,比如 14:30:45。這兩個(gè)類適用于不需要考慮時(shí)區(qū)的場景。

-
獲取當(dāng)前日期或時(shí)間:
LocalDate today = LocalDate.now(); LocalTime now = LocalTime.now();
創(chuàng)建指定日期或時(shí)間:
LocalDate date = LocalDate.of(2025, 4, 5); LocalTime time = LocalTime.of(14, 30, 45);
常見操作:加減天數(shù)、月份等
LocalDate tomorrow = today.plusDays(1); LocalDate nextMonth = today.plusMonths(1);
注意:這些對象是不可變的(immutable),每次操作都會返回一個(gè)新的實(shí)例。
LocalDateTime 和 ZonedDateTime:結(jié)合日期與時(shí)間,支持時(shí)區(qū)
LocalDateTime
是 LocalDate
和 LocalTime
的組合,但仍然不包含時(shí)區(qū)信息。如果需要考慮時(shí)區(qū),就要使用 ZonedDateTime
。
創(chuàng)建
LocalDateTime
:LocalDateTime dateTime = LocalDateTime.of(2025, 4, 5, 14, 30);
將
LocalDateTime
轉(zhuǎn)換為帶時(shí)區(qū)的時(shí)間:ZoneId zone = ZoneId.of("Asia/Shanghai"); ZonedDateTime zoned = dateTime.atZone(zone);
獲取當(dāng)前帶時(shí)區(qū)的時(shí)間:
ZonedDateTime nowInTokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
時(shí)區(qū)轉(zhuǎn)換是常見需求,例如將 UTC 時(shí)間轉(zhuǎn)成本地時(shí)間:
ZonedDateTime utcTime = ZonedDateTime.now(ZoneOffset.UTC); ZonedDateTime localTime = utcTime.withZoneSameInstant(zone);
Duration 和 Period:計(jì)算時(shí)間差
要計(jì)算兩個(gè)時(shí)間點(diǎn)之間的間隔,可以使用 Duration
(用于時(shí)間)和 Period
(用于日期)。
使用
Period
計(jì)算日期差異:LocalDate start = LocalDate.of(2025, 4, 1); LocalDate end = LocalDate.of(2025, 5, 10); Period period = Period.between(start, end); // 得到1個(gè)月零9天
使用
Duration
計(jì)算時(shí)間差異:LocalTime start = LocalTime.of(10, 0); LocalTime end = LocalTime.of(12, 30); Duration duration = Duration.between(start, end); // 得到9000秒
如果你有兩個(gè) ZonedDateTime
,也可以直接用 Duration
或者 ChronoUnit
來獲取精確差值:
long hoursBetween = ChronoUnit.HOURS.between(zonedStart, zonedEnd);
格式化與解析:字符串和時(shí)間之間互相轉(zhuǎn)換
格式化輸出和解析輸入是日常開發(fā)中常見的操作。java.time
提供了 DateTimeFormatter
來完成這項(xiàng)任務(wù)。
格式化日期時(shí)間:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String text = LocalDateTime.now().format(formatter);
解析字符串為日期時(shí)間:
String input = "2025-04-05 14:30:45"; LocalDateTime parsed = LocalDateTime.parse(input, formatter);
注意:模式字符串要和輸入格式嚴(yán)格一致,否則會拋出異常。建議在解析用戶輸入時(shí)做好異常處理。
基本上就這些。java.time
設(shè)計(jì)得比較直觀,只要熟悉幾個(gè)核心類和它們之間的轉(zhuǎn)換方式,就能應(yīng)對大多數(shù)業(yè)務(wù)場景。
以上是如何與Java 8(Java.Time)中的日期和時(shí)間合作?的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

如何使用MySQL的EXTRACT函數(shù)提取日期時(shí)間的指定部分MySQL數(shù)據(jù)庫是最常用的關(guān)系型數(shù)據(jù)庫之一,廣泛應(yīng)用于各種類型的應(yīng)用程序中。日期和時(shí)間是數(shù)據(jù)庫中常見的數(shù)據(jù)類型,經(jīng)常需要從日期時(shí)間字段中提取特定的部分,以滿足業(yè)務(wù)需求。在MySQL中,可以使用EXTRACT函數(shù)來從日期時(shí)間中提取指定的部分。本文將介紹如何使用MySQL的EXTRACT函數(shù)來提取日期時(shí)

Golang時(shí)間轉(zhuǎn)換:日期和時(shí)間的互相轉(zhuǎn)換技巧隨著Go語言在各個(gè)領(lǐng)域的不斷發(fā)展,處理日期和時(shí)間的需求也越來越常見。在Go語言中,日期和時(shí)間的轉(zhuǎn)換是一項(xiàng)基本的操作,同時(shí)也是開發(fā)中常見的需求。本文將介紹Golang中如何進(jìn)行日期和時(shí)間的互相轉(zhuǎn)換,同時(shí)提供具體的代碼示例,幫助開發(fā)者更好地掌握這一技巧。日期和時(shí)間的表示在Go語言中,日期和時(shí)間分別由time.Time

PHP內(nèi)置函數(shù)提供了一種便捷的方式來處理日期和時(shí)間。您可以使用這些函數(shù)創(chuàng)建、格式化和操縱日期時(shí)間值,例如:創(chuàng)建日期時(shí)間值:使用newDateTime()函數(shù)。格式化日期時(shí)間值:使用format()方法。操縱日期時(shí)間值:使用add()、sub()、setTimestamp()等方法。比較日期時(shí)間值:使用比較運(yùn)算符。計(jì)算日期之間差異:使用diff()方法。

Python3.x中如何使用datetime模塊獲取當(dāng)前日期和時(shí)間在Python編程中,使用datetime模塊可以方便地獲取當(dāng)前日期和時(shí)間。datetime模塊提供了各種函數(shù)和類來處理日期、時(shí)間和時(shí)間間隔。為了使用datetime模塊,首先需要導(dǎo)入該模塊:importdatetime獲取當(dāng)前日期和時(shí)間的方法是使用datetime模塊中的datetim

使用Java的String.format()函數(shù)格式化日期時(shí)間簡介:在Java中,我們經(jīng)常需要對日期時(shí)間進(jìn)行格式化,使其滿足特定的樣式要求。Java提供了多種方式來格式化日期時(shí)間,其中一種常用的方式是使用String.format()函數(shù)。本文將介紹如何使用String.format()函數(shù)來格式化日期時(shí)間,并提供代碼示例。代碼示例:下面是一個(gè)簡單的示例,演

PHP5.5日期時(shí)間處理:如何使用DateTime類進(jìn)行日期時(shí)間操作在PHP開發(fā)中,處理日期時(shí)間是非常常見的需求。PHP5.5引入了一個(gè)非常強(qiáng)大的日期時(shí)間處理類-DateTime,它提供了一些方便的方法來操作日期和時(shí)間。在本文中,我們將介紹如何使用DateTime類進(jìn)行日期時(shí)間操作。創(chuàng)建DateTime對象DateTime類的實(shí)例化非常簡單,只

PHP中的時(shí)間戳處理:如何使用date函數(shù)將時(shí)間戳轉(zhuǎn)換為日期時(shí)間時(shí)間戳是一種用于表示日期和時(shí)間的常見方式。在PHP中,我們可以使用內(nèi)置的date函數(shù)將時(shí)間戳轉(zhuǎn)換為易于閱讀的日期和時(shí)間格式。本文將介紹如何使用date函數(shù)來處理時(shí)間戳,并提供一些示例代碼供參考。首先,讓我們了解一下時(shí)間戳是什么。時(shí)間戳是指從1970年1月1日00:00:00以來經(jīng)

Java8是一款非常流行的編程語言,并且在許多公司以及項(xiàng)目中都得到廣泛應(yīng)用。它最有趣的新特性之一是日期時(shí)間API,提供了一種全新的方式來處理日期和時(shí)間。然而,使用過程中也會有些問題,Java8日期時(shí)間處理錯(cuò)誤就是其中之一。本文將探討一些常見的Java8日期時(shí)間處理錯(cuò)誤,并提供相應(yīng)的解決方案和避免方法。日期格式化錯(cuò)誤日期格式化是在Java8
