首頁 > 軟體

如何用Java處理日期和時間

2021-05-16 01:30:29

時間是世界上更寶貴的力量。我們所有人都隨著時間的流逝而生活。

使用軟體處理時間時,很難保持當前的日期和時間。因為每個地方的時區都不同。開發人員很難為不同時區構建軟體。

在Java的早期,日期和時間資料以長資料類型數字的形式儲存。因此,秒數可以顯示為正數和負數(長表示正號和負號)。

有一些預構建庫(類)用於定義應用程式中的時區。

那些是:

java.util.Date

java.util.TimeZone

java.util.Calendar

java.text.SimpleDateFormat

這些庫在java.util,java.time,java.sql,java.text包中可用。

這些庫最多可以用到Java7。但是,當開發人員使用這些舊式類來構建應用程式時,他們會遇到一些困難。

那些是 :

1.日期格式問題

Date類用於表示日期,但它也表示時間(小時,分鐘和秒)。

2.時區處理問題

日期與時區無關。它採用預設時區。因此,我們不能代表不同時區的日期。

3.沒有執行緒安全

當我們嘗試在Java中使用日期和時間格式時,java.util類不是執行緒安全的。因此難以使用。

4.基於零索引的方法失敗。

過去將日期類零索引為一個月,這有時會帶來一些錯誤。

用於顯示基於零索引的方法的示例程式碼失敗

因此,Java 8提供了Date and Time API來解決傳統類的這些缺點。

Java 8日期時間API

Java 8如何處理Date?

Java 8引入了兩個用於處理這些問題的類;

ZoneId實現時區的ID。例如ZoneId.of(「亞洲/印度」)。

ZoneDateTime在給定的時區中實現了人類可讀的ISO 8601日曆中瞬間的表示。例如:Instant.now()。atZone(zoneId)

Java 8為開發人員提供了用於構建應用程式的Date Time API。此日期時間API位於java.time程式包中。此java.time程式包包含一些具有多個實用程式的子程式包。對於該java.time.format包,它包含一些用於解析日期格式並將其格式化為字元串的類。

Java 8的主要變化是不再使用長資料類型來表示單個毫秒數。

但是納秒數始終是正數,並且使用int資料類型表示。它在Java 8之前和之後使用

在java.time包中包含各種類,例如Clock,LocalDate,LocalDateTime,LocalTime,MonthDay,Year,YearMonth等。

java.time.LocalTime-這是一個不可變的類,它以預設的小時-分鐘-秒的格式表示時間。僅代表基於ISO 8601日曆的時間。

java.time.LocalDate-年月日日期在ISO日曆中表示。僅顯示日期(不顯示時間)。這段時間是以人類可讀的方式閱讀的。

java.time.LocalDateTime-表示日期和時間的日期時間物件,格式為yyyy-MM-dd-HH-mm-ss.zzz。

java.time.ZonedDateTime-用日期和時區表示。它用於將所有日期時間欄位儲存到精確的納秒級。 (LocalDateTime與時區結合起來代表它)

java.time.OffsetTime-將時間檢視格式表示為時-分-秒,作為時區偏移量,而不顯示時區ID。

java.time.OffsetDateTime-它代表具有相應時區的Date而不顯示時區ID。

java.time.Clock-提供使用任何給定時區訪問當前時刻,日期和時間的資訊。

java.time.Instant-表示時間軸上的特定時刻。

java.time.Duration-用於以秒和納秒為單位測量時間。不使用年,月,日等基於日期的構造,而是提供了以天,小時和分鐘為單位進行轉換的方法。

java.time.Period-用於定義基於日期的值中的日期之間的差異(年,月,日)

java.time.ZoneId-指定時區標識符,並提供在Instant和LocalDateTime之間進行轉換的規則。

java.time.ZoneOffset-指定與格林威治/ UTC時間的時區偏移量。

日期時間API操作

這些物件是LocalDateTime,LocalDate,LocalTime,它們是不可變的物件,因此我們無法應用這些運算符。但是重要的是,必須對日期和時間進行加,減和計算,Java為這些物件提供了操作。為此,plusX()可用於加法,minusX()可用於減法。可以替換為「年,月,小時,天」的X。並且使用「 isBefore()」或「 isAfter()」方法與日期進行比較。

格式化和解析日期和時間

使用java.time包根據每個地理位置獲取不同時區的日期和時間。但這還不足以代表時間日期,因此需要一種標準的方式來表示時區。

由於地理位置的差異,人們使用了多種標準語言。因此,該原因應用程式應可調整以表示本地語言和格式。 Java提供了Java環境中支援的java.util.Locale類來表示語言和國家。因此,首先將Locale設定為將時間格式化為本地格式,然後java給java.time.format.DateTimeFormatter,以標準方式或自定義方式顯示日期和時間。

好了,本文到此結束。如果對程式設計、計算機、程式設計師方面感興趣的話,歡迎私信聯絡我,隨時交流!點個關注,是對我莫大的鼓勵!


IT145.com E-mail:sddin#qq.com