欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java8?LocalDateTime時間日期類使用實例詳解

 更新時間:2024年03月06日 14:41:17   作者:牽著貓散步的鼠鼠  
本文從 LocalDateTime 類的創(chuàng)建、轉(zhuǎn)換、格式化與解析、計算與比較以及其他操作幾個方面詳細介紹了 LocalDateTime 類在 Java 8 中的使用,感興趣的朋友跟隨小編一起看看吧

前言

LocalDateTime 是 Java 8 中日期時間 API 提供的一個類,在日期和時間的表示上提供了更加豐富和靈活的支持。

LocalDateTime 類相比于早期的 Date 和 Calendar 類來說有以下幾個優(yōu)勢:

  • 更加豐富的日期時間類型支持: LocalDateTime 類封裝了 LocalDate 和 LocalTime 兩個類,支持更加細化的日期時間操作,例如獲取某一天的開始和結(jié)束時間、獲取某個時間段內(nèi)的所有日期等。
  • 線程安全性: LocalDateTime 類是不可變對象,線程安全性較高,可以在多線程環(huán)境下安全使用。
  • 時區(qū)支持: LocalDateTime 類在處理時區(qū)相關(guān)的操作時有著很好的支持,例如可以將一個 LocalDateTime 對象轉(zhuǎn)換成 ZonedDateTime 對象,以支持更加復(fù)雜的時區(qū)計算。

LocalDateTime 類的實現(xiàn)原理是基于 Java 的時間 API,其內(nèi)部實現(xiàn)主要依賴于 Java 中的 long 類型和標準 Unix 時間戳來表示日期時間。具體來說,LocalDateTime 內(nèi)部包含了一個 long 類型的字段,用于表示自 UTC(協(xié)調(diào)世界時)1970 年 1 月 1 日 00:00:00 開始經(jīng)過的毫秒數(shù)(即 Unix 時間戳),通過對這個時間戳的操作來實現(xiàn) LocalDateTime 類的各種功能。

同時,在實現(xiàn)時區(qū)相關(guān)的操作時,LocalDateTime 類還依賴于 Java 中的時區(qū)類(例如 ZoneId 和 ZoneOffset),通過將 LocalDateTime 轉(zhuǎn)換為 ZonedDateTime 或 OffsetDateTime 對象來實現(xiàn)時區(qū)相關(guān)的計算。

一、LocalDateTime 的創(chuàng)建

LocalDateTime 類通過提供許多靜態(tài)方法來創(chuàng)建對象,這些方法包括:

1. of() 方法

of() 方法用于根據(jù)指定的年、月、日、時、分、秒和納秒值創(chuàng)建一個 LocalDateTime 對象,其語法如下:

public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)

其中,year、month、dayOfMonth、hour、minute、second 和 nanoOfSecond 分別表示年、月、日、時、分、秒和納秒值。

例如,以下代碼創(chuàng)建了一個 LocalDateTime 對象,表示 2019 年 10 月 30 日 14 點 30 分 0 秒:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);

2. now() 方法

now() 方法用于獲取當前系統(tǒng)時間的 LocalDateTime 對象,其語法如下:

public static LocalDateTime now()

例如,以下代碼創(chuàng)建了一個 LocalDateTime 對象,表示當前系統(tǒng)時間:

LocalDateTime dateTime = LocalDateTime.now();

3. parse() 方法

parse() 方法用于將一個字符串解析成 LocalDateTime 對象,其語法如下:

public static LocalDateTime parse(CharSequence text)
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)

其中,text 表示要解析的字符串,formatter 表示日期時間格式化對象。如果不指定 formatter,則默認使用 ISO_LOCAL_DATE_TIME 格式。

例如,以下代碼創(chuàng)建了一個 LocalDateTime 對象,表示 2019 年 10 月 30 日 14 點 30 分 0 秒:

LocalDateTime dateTime = LocalDateTime.parse("2019-10-30T14:30:00");

4. from() 方法

from()方法用于將一個 TemporalAccessor 對象轉(zhuǎn)換成 LocalDateTime 對象,其語法如下:

public static LocalDateTime from(TemporalAccessor temporal)

例如,以下代碼將一個 ZonedDateTime 對象轉(zhuǎn)換成 LocalDateTime 對象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDate date = dateTime.toLocalDate();

二、LocalDateTime 的轉(zhuǎn)換

LocalDateTime 類提供了許多方便的轉(zhuǎn)換方法,我們可以把 LocalDateTime 轉(zhuǎn)換成其他類型,或者把其他類型轉(zhuǎn)換成 LocalDateTime。這些方法包括:

1. toLocalDate() 方法

toLocalDate()方法用于把 LocalDateTime 對象轉(zhuǎn)換成 LocalDate 對象,其語法如下:

public LocalDate toLocalDate()

例如,以下代碼將一個 LocalDateTime 對象轉(zhuǎn)換成 LocalDate 對象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDate date = dateTime.toLocalDate();

2. toLocalTime() 方法

toLocalTime()方法用于把 LocalDateTime 對象轉(zhuǎn)換成 LocalTime 對象,其語法如下:

public LocalTime toLocalTime()

例如,以下代碼將一個 LocalDateTime 對象轉(zhuǎn)換成 LocalTime 對象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalTime time = dateTime.toLocalTime();

3. atOffset() 方法

atOffset() 方法用于把 LocalDateTime 對象轉(zhuǎn)換成帶偏移量的 OffsetDateTime 對象,其語法如下:

public OffsetDateTime atOffset(ZoneOffset offset)

其中,offset 表示要添加的時區(qū)偏移量。

例如,以下代碼將一個 LocalDateTime 對象轉(zhuǎn)換成帶偏移量的 OffsetDateTime 對象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
ZoneOffset offset = ZoneOffset.of("+08:00");
OffsetDateTime offsetDateTime = dateTime.atOffset(offset);

4. toEpochSecond() 方法

toEpochSecond() 方法用于把 LocalDateTime 對象轉(zhuǎn)換成 Unix 時間戳,其語法如下:

public long toEpochSecond(ZoneOffset offset)

例如,以下代碼把一個 LocalDateTime 對象轉(zhuǎn)換成 Unix 時間戳:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
ZoneOffset offset = ZoneOffset.of("+08:00");
long epochSecond = dateTime.toEpochSecond(offset);

5. from() 方法

from() 方法用于將一個 TemporalAccessor 對象轉(zhuǎn)換成 LocalDateTime 對象,其語法與前面講解的相同,這里不再贅述。

三、LocalDateTime 的格式化與解析

日期時間的格式化與解析是 Java 8 中日期時間 API 中的重要功能。LocalDateTime 類通過內(nèi)置的 DateTimeFormatter 類以及一些方法來實現(xiàn)格式化和解析。下面我們將詳細介紹 LocalDateTime 類的格式化和解析方法。

1. format() 方法

format() 方法用于將 LocalDateTime 對象格式化成字符串,其語法如下:

public String format(DateTimeFormatter formatter)

其中,formatter 表示日期時間格式化對象。

例如,以下代碼將一個 LocalDateTime 對象格式化成 " yyyy-MM-dd HH:mm:ss " 格式的字符串:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strDate = dateTime.format(formatter);

2. parse() 方法

parse() 方法用于將一個字符串解析成 LocalDateTime 對象,其語法在前面已經(jīng)介紹過,這里不再贅述。

例如,以下代碼將一個字符串解析成 LocalDateTime 對象:

LocalDateTime dateTime = LocalDateTime.parse("2019-10-30T14:30:00");

3. DateTimeFormatter 類

DateTimeFormatter 類是 Java 8 中提供的日期時間格式化類,它提供了多種內(nèi)置的格式化方式,同時也可以自定義日期時間格式。常用的幾種內(nèi)置格式化方式包括:

ofPattern() 方法 :使用指定的模式字符串創(chuàng)建一個 DateTimeFormatter 對象。

public static DateTimeFormatter ofPattern(String pattern)

例如,以下代碼創(chuàng)建了一個 " yyyy-MM-dd HH:mm:ss " 格式的 DateTimeFormatter 對象:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

ISO_LOCAL_DATE_TIME :表示格式為 "yyyy-MM-ddTHH:mm:ss" 的日期時間。 

public static final DateTimeFormatter ISO_LOCAL_DATE_TIME

例如,以下代碼創(chuàng)建了一個 " yyyy-MM-ddTHH:mm:ss " 格式的 DateTimeFormatter 對象:

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

ISO_LOCAL_DATE :表示格式為 "yyyy-MM-dd" 的日期。 

public static final DateTimeFormatter ISO_LOCAL_DATE

例如,以下代碼創(chuàng)建了一個 " yyyy-MM-dd " 格式的 DateTimeFormatter 對象:

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;

四、LocalDateTime 的計算與比較

LocalDateTime 類還提供了一些方法來進行日期時間的計算和比較。這些方法包括:

1. plusXxx() 和 minusXxx() 方法

plusXxx() 和 minusXxx() 方法分別用于在當前 LocalDateTime 對象上加上或減去指定的日期時間量,其中 Xxx 表示日期時間單位,如:Years、Months、Days、Hours、Minutes、Seconds 和 Nanos。

例如,以下代碼將一個 LocalDateTime 對象加上 1 年并減去 1 月:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.plusYears(1).minusMonths(1);

2. withXxx() 方法

withXxx() 方法用于以指定的日期時間量來修改 LocalDateTime 對象的對應(yīng)字段,其他字段不變,其中 Xxx 表示日期時間單位,如:Year、Month、DayOfMonth、Hour、Minute、Second 和 Nano。

例如,以下代碼將 LocalDateTime 對象的年份修改為 2020 年:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.withYear(2020);

3. isBefore() 和 isAfter() 方法

isBefore() 和 isAfter() 方法分別用于判斷兩個 LocalDateTime 對象的先后順序。其中, isBefore() 方法用于判斷當前 LocalDateTime 對象是否在參數(shù)對象之前, isAfter() 方法用于判斷當前 LocalDateTime 對象是否在參數(shù)對象之后。

例如,以下代碼判斷兩個 LocalDateTime 對象的先后順序:

LocalDateTime dateTime1 = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2020, 10, 30, 14, 30, 0, 0);
boolean before = dateTime1.isBefore(dateTime2); // true
boolean after = dateTime1.isAfter(dateTime2);   // false

五、LocalDateTime 的其他操作

LocalDateTime 類還提供了一些其他操作,這些操作包括:

1. with() 方法

with() 方法用于以指定的 TemporalAdjuster 對象或者方法來修改 LocalDateTime 對象,例如,以下代碼將 LocalDateTime 對象的日期調(diào)整為當前月份的第一天:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.with(TemporalAdjusters.firstDayOfMonth());

其中,TemporalAdjusters 是 Java 8 中提供的一個類,它提供了許多方便的日期時間調(diào)整器,如: firstDayOfMonth() 、 lastDayOfMonth() 、 next() 、 previous() 等。通過調(diào)用這些方法可以生成對應(yīng)的 TemporalAdjuster 對象。

2. getXXX() 方法

getXXX() 方法用于獲取 LocalDateTime 對象的指定字段值,其中 Xxx 表示日期時間單位,如:Year、Month、DayOfMonth、Hour、Minute、Second 和 Nano。

例如,以下代碼獲取 LocalDateTime 對象的月份和分鐘數(shù):

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
int month = dateTime.getMonthValue();  // 10
int minute = dateTime.getMinute();     // 30

3. getDayOfWeek() 和 getDayOfMonth() 方法

getDayOfWeek() 和 getDayOfMonth() 方法分別用于獲取 LocalDateTime 對象所表示日期的星期幾和哪一天。例如,以下代碼獲取 LocalDateTime 對象的星期幾和哪一天:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
DayOfWeek dayOfWeek = dateTime.getDayOfWeek();   // WEDNESDAY
int dayOfMonth = dateTime.getDayOfMonth();       // 30

4. toInstant() 方法

toInstant() 方法用于獲取 LocalDateTime 對象的 Instant 對象,其中 Instant 對象表示了從 1970 年 1 月 1 日 00:00:00 GMT 開始的毫秒數(shù)例如,以下代碼獲取 LocalDateTime 對象的 Instant 對象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
Instant instant = dateTime.toInstant();

5. compareTo() 方法

compareTo() 方法用于比較兩個 LocalDateTime 對象的順序大小,如果當前對象在參數(shù)對象之前,則返回負數(shù),如果當前對象在參數(shù)對象之后,則返回正數(shù),如果兩個對象相等,則返回 0。

例如,以下代碼比較兩個 LocalDateTime 對象的順序:

LocalDateTime dateTime1 = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2020, 10, 30, 14, 30, 0, 0);
int result = dateTime1.compareTo(dateTime2);  // -1

總結(jié)

本文從 LocalDateTime 類的創(chuàng)建、轉(zhuǎn)換、格式化與解析、計算與比較以及其他操作幾個方面詳細介紹了 LocalDateTime 類在 Java 8 中的使用。

掌握 LocalDateTime 類的使用可以大大提高日期時間處理效率和質(zhì)量,希望本文對讀者有所幫助。

到此這篇關(guān)于Java8 - LocalDateTime時間日期類使用詳解的文章就介紹到這了,更多相關(guān)Java8  LocalDateTime時間日期類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-Plus如何最優(yōu)雅最簡潔地完成數(shù)據(jù)庫操作

    MyBatis-Plus如何最優(yōu)雅最簡潔地完成數(shù)據(jù)庫操作

    Mybatis-Plus是一個?Mybatis?的增強工具,在?Mybatis?的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何最優(yōu)雅最簡潔地完成數(shù)據(jù)庫操作的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • javaweb實戰(zhàn)之商城項目開發(fā)(二)

    javaweb實戰(zhàn)之商城項目開發(fā)(二)

    這篇文章主要針對javaweb商城項目開發(fā)進行實戰(zhàn)演習(xí),利用mybatis創(chuàng)建DAO層,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Spring MVC 自定義數(shù)據(jù)轉(zhuǎn)換器的思路案例詳解

    Spring MVC 自定義數(shù)據(jù)轉(zhuǎn)換器的思路案例詳解

    本文通過兩個案例來介紹下Spring MVC 自定義數(shù)據(jù)轉(zhuǎn)換器的相關(guān)知識,每種方法通過實例圖文相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • 淺析Java中clone()方法淺克隆與深度克隆

    淺析Java中clone()方法淺克隆與深度克隆

    Java克隆(Clone)是Java語言的特性之一,本篇文章主要介紹了Java中的Clone機制是如何工作的,需要的朋友可以參考下
    2017-04-04
  • java程序設(shè)計語言的優(yōu)勢及特點

    java程序設(shè)計語言的優(yōu)勢及特點

    在本篇文章里小編給大家分享的是一篇關(guān)于java程序設(shè)計語言的優(yōu)勢及特點的內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • JavaWeb HttpServletResponse對象及常用方法

    JavaWeb HttpServletResponse對象及常用方法

    這篇文章主要介紹了JavaWeb-HttpServletResponse對象,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Java實現(xiàn)自動獲取法定節(jié)假日詳細代碼

    Java實現(xiàn)自動獲取法定節(jié)假日詳細代碼

    這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)自動獲取法定節(jié)假日的相關(guān)資料,獲取并處理節(jié)假日數(shù)據(jù)是一個常見需求,特別是在需要安排任務(wù)調(diào)度、假期通知等功能的場景中,需要的朋友可以參考下
    2024-05-05
  • 解決JMap抓取heap使用統(tǒng)計信息報錯的問題

    解決JMap抓取heap使用統(tǒng)計信息報錯的問題

    這篇文章主要介紹了解決JMap抓取heap使用統(tǒng)計信息報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • mybatis注解如何實現(xiàn)對象批量更改

    mybatis注解如何實現(xiàn)對象批量更改

    這篇文章主要介紹了mybatis注解實現(xiàn)對象批量更改的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java線程并發(fā)工具類CountDownLatch原理及用法

    Java線程并發(fā)工具類CountDownLatch原理及用法

    這篇文章主要介紹了Java線程并發(fā)工具類CountDownLatch原理及用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10

最新評論