在<em>Java</em>的早期,日期和时间数据以长数据类型数字的形式存储。因此,秒数可以显示为正数和负数(长表示正号和负号)。有一些预构建库(类)用于定义应用程序中的时区。那些是:<em>java</em>.util.Date <em>java</em>.util.
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,以標準方式或自定義方式顯示日期和時間。
好了,本文到此結束。如果對程式設計、計算機、程式設計師方面感興趣的話,歡迎私信聯絡我,隨時交流!點個關注,是對我莫大的鼓勵!
相關文章
在<em>Java</em>的早期,日期和时间数据以长数据类型数字的形式存储。因此,秒数可以显示为正数和负数(长表示正号和负号)。有一些预构建库(类)用于定义应用程序中的时区。那些是:<em>java</em>.util.Date <em>java</em>.util.
2021-05-16 01:30:29
#AiPodspor#在4月下旬召开的春季新品发布会上,苹果更新了紫色版iPhone 12/mini、M1芯片款<em>iPad</em> Pro、M1芯片款七彩iMac、AirTag,并没有带来大家期待的AirPods 3,没想到今天有博主带来了AirPods3的相关信息,似乎这
2021-05-16 01:30:11
从上图可以看出,小米8SE搭载的骁龙710采用了10纳米工艺制程,Kryo300系列<em>CPU</em>,Adreno600系列GPU。另外还有Spectra250ISP、Hexagon685DPS和X15LTE基带等IP,它们都来自于800系旗舰处理器。 值得一提的是,骁龙71
2021-05-16 01:01:13
这些任务执行的依靠就是环绕器大脑——GNC单元,它采用三套独立<em>CPU</em>同步计算、三机相互诊断的方式运行。据介绍,环绕器三机模式同步运行的“大脑”,首先设计了精确的时间对准机制,保证三台独立的<em>CPU</em>,可以
2021-05-16 01:01:11
索尼还为 PS5 芯片设计了使用液态金属的导热模块,以提供更理想的冷却效果,让主机即便是处在 <em>CPU</em> 和 GPU 满负荷运转状态时也能保持安静。 由于体型相比 PS4 更大,不少玩家在安置 PS5 时会纠结竖放还是平放的
2021-05-16 01:00:58
而这一局势的发生,对于苹果来说,也是进一步扩大市场份额的机会,<em>iPhone</em>12销量的迅速提升,再度拉动苹果生产,销量大幅度提高。当然,销量在大幅度提高的同时,也仍有许多用户在继续等待,等待<em>iPhone</em>13的到来。不
2021-05-16 01:00:36