最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8中的LocalDateTime你會(huì)使用了嗎

 更新時(shí)間:2023年05月21日 09:57:28   作者:蜀山劍客李沐白  
LocalDateTime?是?Java?8?中日期時(shí)間?API?提供的一個(gè)類,在日期和時(shí)間的表示上提供了更加豐富和靈活的支持,本文就來(lái)講講LocalDateTime的一些具體使用方法吧

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

LocalDateTime 類相比于早期的 Date 和 Calendar 類來(lái)說(shuō)有以下幾個(gè)優(yōu)勢(shì):

1.更加豐富的日期時(shí)間類型支持:LocalDateTime 類封裝了 LocalDate 和 LocalTime 兩個(gè)類,支持更加細(xì)化的日期時(shí)間操作,例如獲取某一天的開(kāi)始和結(jié)束時(shí)間、獲取某個(gè)時(shí)間段內(nèi)的所有日期等。

2.線程安全性:LocalDateTime 類是不可變對(duì)象,線程安全性較高,可以在多線程環(huán)境下安全使用。

3.時(shí)區(qū)支持:LocalDateTime 類在處理時(shí)區(qū)相關(guān)的操作時(shí)有著很好的支持,例如可以將一個(gè) LocalDateTime 對(duì)象轉(zhuǎn)換成 ZonedDateTime 對(duì)象,以支持更加復(fù)雜的時(shí)區(qū)計(jì)算。

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

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

一、LocalDateTime 的創(chuàng)建

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

1. of() 方法

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

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 分別表示年、月、日、時(shí)、分、秒和納秒值。

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

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

2. now() 方法

now() 方法用于獲取當(dāng)前系統(tǒng)時(shí)間的 LocalDateTime 對(duì)象,其語(yǔ)法如下:

public static LocalDateTime now()

例如,以下代碼創(chuàng)建了一個(gè) LocalDateTime 對(duì)象,表示當(dāng)前系統(tǒng)時(shí)間:

LocalDateTime dateTime = LocalDateTime.now();

3. parse() 方法

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

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

其中,text 表示要解析的字符串,formatter 表示日期時(shí)間格式化對(duì)象。如果不指定 formatter,則默認(rèn)使用 ISO_LOCAL_DATE_TIME 格式。

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

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

4. from() 方法

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

public static LocalDateTime from(TemporalAccessor temporal)

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

ZonedDateTime zonedDate = ZonedDateTime.of(2019, 10, 30, 14, 30, 0, 0, ZoneId.systemDefault());
LocalDateTime localDateTime = LocalDateTime.from(zonedDate);

二、LocalDateTime 的轉(zhuǎn)換

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

1. toLocalDate() 方法

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

public LocalDate toLocalDate()

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

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

2. toLocalTime() 方法

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

public LocalTime toLocalTime()

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

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

3. atOffset() 方法

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

public OffsetDateTime atOffset(ZoneOffset offset)

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

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

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 對(duì)象轉(zhuǎn)換成 Unix 時(shí)間戳,其語(yǔ)法如下:

public long toEpochSecond(ZoneOffset offset)

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

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

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() 方法用于將一個(gè) TemporalAccessor 對(duì)象轉(zhuǎn)換成 LocalDateTime 對(duì)象,其語(yǔ)法與前面講解的相同,這里不再贅述。

三、LocalDateTime 的格式化與解析

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

1. format() 方法

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

public String format(DateTimeFormatter formatter)

其中,formatter 表示日期時(shí)間格式化對(duì)象。

例如,以下代碼將一個(gè) LocalDateTime 對(duì)象格式化成 "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() 方法用于將一個(gè)字符串解析成 LocalDateTime 對(duì)象,其語(yǔ)法在前面已經(jīng)介紹過(guò),這里不再贅述。

例如,以下代碼將一個(gè)字符串解析成 LocalDateTime 對(duì)象:

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

3. DateTimeFormatter 類

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

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

public static DateTimeFormatter ofPattern(String pattern)

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

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

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

public static final DateTimeFormatter ISO_LOCAL_DATE_TIME

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

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

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

public static final DateTimeFormatter ISO_LOCAL_DATE

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

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;

四、LocalDateTime 的計(jì)算與比較

LocalDateTime 類還提供了一些方法來(lái)進(jìn)行日期時(shí)間的計(jì)算和比較。這些方法包括:

1. plusXxx() 和 minusXxx() 方法

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

例如,以下代碼將一個(gè) LocalDateTime 對(duì)象加上 1 年并減去 1 月:

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

2. withXxx() 方法

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

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

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

3. isBefore() 和 isAfter() 方法

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

例如,以下代碼判斷兩個(gè) LocalDateTime 對(duì)象的先后順序:

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 對(duì)象或者方法來(lái)修改 LocalDateTime 對(duì)象,例如,以下代碼將 LocalDateTime 對(duì)象的日期調(diào)整為當(dāng)前月份的第一天:

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

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

2. getXXX() 方法

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

例如,以下代碼獲取 LocalDateTime 對(duì)象的月份和分鐘數(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 對(duì)象所表示日期的星期幾和哪一天。例如,以下代碼獲取 LocalDateTime 對(duì)象的星期幾和哪一天:

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 對(duì)象的 Instant 對(duì)象,其中 Instant 對(duì)象表示了從 1970 年 1 月 1 日 00:00:00 GMT 開(kāi)始的毫秒數(shù)例如,以下代碼獲取 LocalDateTime 對(duì)象的 Instant 對(duì)象:

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

5. compareTo() 方法

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

例如,以下代碼比較兩個(gè) LocalDateTime 對(duì)象的順序:

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)換、格式化與解析、計(jì)算與比較以及其他操作幾個(gè)方面詳細(xì)介紹了 LocalDateTime 類在 Java 8 中的使用。掌握 LocalDateTime 類的使用可以大大提高日期時(shí)間處理效率和質(zhì)量,希望本文對(duì)讀者有所幫助。

以上就是Java8中的LocalDateTime你會(huì)使用了嗎的詳細(xì)內(nèi)容,更多關(guān)于Java8 LocalDateTime的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 劍指Offer之Java算法習(xí)題精講二叉搜索樹(shù)與數(shù)組查找

    劍指Offer之Java算法習(xí)題精講二叉搜索樹(shù)與數(shù)組查找

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Java并發(fā)中ThreadLocal的使用指南與常見(jiàn)陷阱

    Java并發(fā)中ThreadLocal的使用指南與常見(jiàn)陷阱

    在 Java 并發(fā)編程中,ThreadLocal 是解決線程安全、簡(jiǎn)化上下文傳遞的高頻利器,本文補(bǔ)充了多數(shù)據(jù)存儲(chǔ)規(guī)則與initialValue()兜底邏輯,結(jié)合底層原理、最佳實(shí)踐與避坑指南,全面拆解 ThreadLocal,需要的朋友可以參考下
    2026-03-03
  • Java Map和Set使用詳解(最新推薦)

    Java Map和Set使用詳解(最新推薦)

    本文介紹Java中Map和Set的實(shí)現(xiàn)結(jié)構(gòu),TreeMap/TreeSet基于紅黑樹(shù),HashMap/HashSet基于哈希表,討論哈希沖突處理、負(fù)載因子、線程安全及hashCode/equals的作用,涵蓋二叉搜索樹(shù)特性、查找效率、插入刪除方法等關(guān)鍵內(nèi)容,感興趣的朋友一起看看吧
    2025-09-09
  • Java兩種方式實(shí)現(xiàn)動(dòng)態(tài)代理

    Java兩種方式實(shí)現(xiàn)動(dòng)態(tài)代理

    Java 在 java.lang.reflect 包中有自己的代理支持,該類(Proxy.java)用于動(dòng)態(tài)生成代理類,只需傳入目標(biāo)接口、目標(biāo)接口的類加載器以及 InvocationHandler 便可為目標(biāo)接口生成代理類及代理對(duì)象。我們稱這個(gè)Java技術(shù)為:動(dòng)態(tài)代理
    2020-10-10
  • LeetCode?動(dòng)態(tài)規(guī)劃之矩陣區(qū)域和詳情

    LeetCode?動(dòng)態(tài)規(guī)劃之矩陣區(qū)域和詳情

    這篇文章主要介紹了LeetCode?動(dòng)態(tài)規(guī)劃之矩陣區(qū)域和詳情,文章基于Java的相關(guān)資料展開(kāi)對(duì)LeetCode?動(dòng)態(tài)規(guī)劃的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 在zuulFilter中注入bean失敗的解決方案

    在zuulFilter中注入bean失敗的解決方案

    這篇文章主要介紹了在zuulFilter中注入bean失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • LeetCode -- Path Sum III分析及實(shí)現(xiàn)方法

    LeetCode -- Path Sum III分析及實(shí)現(xiàn)方法

    這篇文章主要介紹了LeetCode -- Path Sum III分析及實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 解析Java異步之call future

    解析Java異步之call future

    當(dāng)調(diào)用一個(gè)函數(shù)的時(shí)候,如果這個(gè)函數(shù)的執(zhí)行過(guò)程是很耗時(shí)的,就必須要等待,但是有時(shí)候并不急著要這個(gè)函數(shù)返回的結(jié)果。因此,可以讓被調(diào)者立即返回,讓他在后臺(tái)慢慢處理這個(gè)請(qǐng)求。對(duì)于調(diào)用者來(lái)說(shuō),可以先處理一些其他事情,在真正需要數(shù)據(jù)的時(shí)候再去嘗試獲得需要的數(shù)據(jù)
    2021-06-06
  • java String的深入理解

    java String的深入理解

    這篇文章主要介紹了java String的深入理解的相關(guān)資料,希望通過(guò)本文大家能理解String的用法,需要的朋友可以參考下
    2017-09-09
  • Idea 2023.2.5配置插件、Maven的過(guò)程

    Idea 2023.2.5配置插件、Maven的過(guò)程

    這篇文章主要介紹了Idea 2023.2.5配置插件、Maven的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評(píng)論

长泰县| 漾濞| 高平市| 巴林右旗| 晋宁县| 凯里市| 旬邑县| 香格里拉县| 隆昌县| 安义县| 德惠市| 新巴尔虎左旗| 大邑县| 平舆县| 闻喜县| 溧阳市| 谢通门县| 巫溪县| 明水县| 酒泉市| 温州市| 陕西省| 盐城市| 万山特区| 濉溪县| 大方县| 呼图壁县| 商水县| 红原县| 临猗县| 五莲县| 武安市| 济阳县| 益阳市| 遵义县| 永靖县| 静海县| 五莲县| 许昌市| 神农架林区| 什邡市|