AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

深入了解Java 8 新特性-日期時(shí)間API之LocalDateTime類

來(lái)源: 責(zé)編: 時(shí)間:2024-02-04 09:00:25 236觀看
導(dǎo)讀注意本文編寫的單元測(cè)試是基于java11,具體的版本號(hào)是:11.0.19關(guān)于LocalDateTimeLocalDateTime 是 Java 8 中引入的一個(gè)新的日期時(shí)間 API,它表示一個(gè)沒(méi)有時(shí)區(qū)的日期時(shí)間對(duì)象,是不可變且線程安全的。LocalDateTime 通常用


7Vr28資訊網(wǎng)——每日最新資訊28at.com

注意

本文編寫的單元測(cè)試是基于java11,具體的版本號(hào)是:11.0.197Vr28資訊網(wǎng)——每日最新資訊28at.com

關(guān)于LocalDateTime

LocalDateTime 是 Java 8 中引入的一個(gè)新的日期時(shí)間 API,它表示一個(gè)沒(méi)有時(shí)區(qū)的日期時(shí)間對(duì)象,是不可變且線程安全的。LocalDateTime 通常用于需要同時(shí)表示日期和時(shí)間,但不涉及時(shí)區(qū)的場(chǎng)景。7Vr28資訊網(wǎng)——每日最新資訊28at.com

LocalDateTime、LocalDate和LocalTime都是Java中用于表示日期和時(shí)間的數(shù)據(jù)類型,但它們?cè)诠δ芎褪褂蒙嫌幸恍┲匾膮^(qū)別。7Vr28資訊網(wǎng)——每日最新資訊28at.com

與LocalDate的區(qū)別

功能:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime:是一個(gè)不可變的日期時(shí)間對(duì)象,包含日期和時(shí)間信息,通常被視為年-月-日-時(shí)-分-秒。它也可以訪問(wèn)其他日期和時(shí)間字段,例如一年中的某天、一周中的某天和一周中的某周。時(shí)間以納秒精度表示。LocalDateTime是不可變的,提供了各種方法來(lái)操作和提取日期和時(shí)間值,并且是線程安全的。
  • LocalDate:也是一個(gè)不可變的日期時(shí)間對(duì)象,但只包含日期信息,通常被視為年-月-日。它不包含時(shí)間信息。LocalDate提供了方法來(lái)操作和提取日期值,但不包括時(shí)間信息。同樣,它是不可變的,并且是線程安全的。

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 如果需要同時(shí)處理日期和時(shí)間信息,LocalDateTime更為適用。
  • 如果只需要操作日期,不需要時(shí)間信息,LocalDate可能更合適。

與LocalTime的區(qū)別

功能:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime表示日期和時(shí)間,不包含時(shí)區(qū)信息。它是一個(gè)不可變類,提供了一系列方法來(lái)獲取、設(shè)置和操作年、月、日、時(shí)、分、秒等日期和時(shí)間的不同部分,以及進(jìn)行比較、格式化、解析等操作。LocalDateTime是LocalDate和LocalTime的組合,可以用于存儲(chǔ)和操作具體的日期和時(shí)間。
  • LocalTime表示時(shí)間,不包含日期和時(shí)區(qū)信息。它也是不可變類,提供了一系列方法來(lái)獲取、設(shè)置和操作時(shí)、分、秒等時(shí)間的不同部分,以及進(jìn)行比較、格式化等操作。LocalTime可以用于存儲(chǔ)和操作每天的固定時(shí)間點(diǎn),如午夜、中午等。

使用場(chǎng)景7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 如果需要同時(shí)處理日期和時(shí)間信息,LocalDateTime更為適用。
  • 如果只需要操作時(shí)間,不需要日期信息,LocalTime可能更合適。

核心方法

LocalDateTime#now()

LocalDateTime#now() 用于獲取當(dāng)前的日期和時(shí)間,不包含時(shí)區(qū)信息。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Test    public void test() {        LocalDateTime now = LocalDateTime.now();        String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));        System.out.println(format);//當(dāng)前日期和時(shí)間:2023-11-27 11:23:54    }

LocalDateTime#of(...)、LocalDateTime#ofInstant(...)、LocalDateTime#ofEpochSecond(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime#of():這個(gè)方法用于創(chuàng)建一個(gè)具有特定日期和時(shí)間的LocalDateTime對(duì)象。它接受年、月、日、時(shí)、分、秒作為參數(shù),返回一個(gè)對(duì)應(yīng)的LocalDateTime實(shí)例。使用場(chǎng)景包括需要?jiǎng)?chuàng)建一個(gè)特定的日期和時(shí)間對(duì)象,例如生日、紀(jì)念日等。
  • LocalDateTime#ofInstant():這個(gè)方法用于使用Instant和時(shí)區(qū)ID創(chuàng)建LocalDateTime的實(shí)例。它將兩個(gè)參數(shù)傳遞給方法,一個(gè)是Instant類型,表示傳遞給創(chuàng)建localdatetime的瞬間,另一個(gè)是ZoneId類型,代表用于創(chuàng)建偏移量的時(shí)區(qū)。該方法返回一個(gè)對(duì)應(yīng)的LocalDateTime實(shí)例。使用場(chǎng)景包括需要將一個(gè)瞬時(shí)轉(zhuǎn)化為本地日期和時(shí)間,例如在處理與時(shí)間相關(guān)的數(shù)據(jù)時(shí),需要將UTC時(shí)間轉(zhuǎn)換為本地時(shí)間。
  • LocalDateTime#ofEpochSecond():這個(gè)方法用于根據(jù)秒數(shù)和納秒數(shù)創(chuàng)建一個(gè)LocalDateTime對(duì)象。它接受秒數(shù)和納秒數(shù)作為參數(shù),返回一個(gè)對(duì)應(yīng)的LocalDateTime實(shí)例。使用場(chǎng)景包括需要將秒數(shù)和納秒數(shù)轉(zhuǎn)化為日期和時(shí)間對(duì)象,例如在處理時(shí)間戳等數(shù)據(jù)時(shí),需要將秒數(shù)和納秒數(shù)轉(zhuǎn)換為日期和時(shí)間對(duì)象。
@Test    public void test2() {        LocalDateTime localDateTime = LocalDateTime.of(2023, 11, 27, 11, 27, 56);        System.out.println(localDateTime);//輸出結(jié)果:2023-11-27T11:27:56        LocalDate localDate = LocalDate.of(2023, 11, 27);        LocalTime localTime = LocalTime.of(11, 27, 56);        LocalDateTime localDateTime1 = LocalDateTime.of(localDate, localTime);        System.out.println(localDateTime1);//輸出結(jié)果:2023-11-27T11:27:56        LocalDateTime localDateTime2 = LocalDateTime.ofInstant(Instant.ofEpochSecond(61), ZoneId.systemDefault());        System.out.println(localDateTime2);//輸出結(jié)果:1970-01-01T08:01:01        LocalDateTime localDateTime3 = LocalDateTime.ofEpochSecond(61, 0, ZoneOffset.ofHours(8));        System.out.println(localDateTime3);//輸出結(jié)果:1970-01-01T08:01:01    }

LocalDateTime#from(...)

LocalDateTime#from(...)用于從給定的日期時(shí)間對(duì)象中創(chuàng)建一個(gè)新的LocalDateTime實(shí)例。這個(gè)方法接受一個(gè)Object類型的參數(shù),這個(gè)對(duì)象需要是以下類型之一:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • ZonedDateTime
  • OffsetDateTime
  • Instant
  • LocalDate
  • LocalTime
  • YearMonth
  • MonthDay
  • YearWeek
  • Year
  • Month
  • DayOfWeek
  • WeekOfMonth
  • WeekOfYear
  • DayOfYear
  • MonthDayOfYear
  • YearMonthDayOfYear

當(dāng)給定的日期時(shí)間對(duì)象為以上所列出的類型之一時(shí),LocalDateTime#from(...)方法會(huì)嘗試從中提取日期和時(shí)間信息,并創(chuàng)建一個(gè)新的LocalDateTime實(shí)例。如果給定的對(duì)象無(wú)法轉(zhuǎn)換為L(zhǎng)ocalDateTime,那么這個(gè)方法會(huì)拋出一個(gè)DateTimeException異常。7Vr28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)方法的使用場(chǎng)景通常是在需要將一個(gè)日期時(shí)間對(duì)象轉(zhuǎn)換為L(zhǎng)ocalDateTime,以便進(jìn)行后續(xù)的日期和時(shí)間運(yùn)算或處理。例如,你可能從數(shù)據(jù)庫(kù)中獲取了一個(gè)日期時(shí)間戳,然后你需要將這個(gè)日期時(shí)間戳轉(zhuǎn)換為L(zhǎng)ocalDateTime,以便進(jìn)行進(jìn)一步的計(jì)算或處理?;蛘?,你可能需要從一個(gè)具有特定時(shí)區(qū)的日期時(shí)間對(duì)象中創(chuàng)建一個(gè)沒(méi)有時(shí)區(qū)的LocalDateTime。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Test    public void test3() {        LocalDateTime localDateTime = LocalDateTime.parse("2023-11-2711:36:56", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));        LocalDateTime from = LocalDateTime.from(localDateTime);        System.out.println(from);//輸出結(jié)果:2023-11-2711:36:56    }

LocalDateTime#parse(...)

LocalDateTime#parse(...) 用于將字符串解析為 LocalDateTime 對(duì)象的函數(shù)。該方法使用一個(gè)字符串作為輸入,并根據(jù)該字符串的內(nèi)容創(chuàng)建一個(gè)新的 LocalDateTime 對(duì)象。7Vr28資訊網(wǎng)——每日最新資訊28at.com

在使用該方法時(shí),該字符串必須符合 ISO 8601 格式,例如 "2019-01-01T12:00:00",另外還需要注意時(shí)區(qū)的問(wèn)題。如果字符串中沒(méi)有指定時(shí)區(qū)信息,那么解析出來(lái)的 LocalDateTime 對(duì)象將是本地時(shí)區(qū)的時(shí)間。如果需要指定時(shí)區(qū),可以使用 ZoneId 類的 of 方法來(lái)創(chuàng)建時(shí)區(qū)對(duì)象,然后使用 LocalDateTime.atZone 方法將 LocalDateTime 對(duì)象轉(zhuǎn)換為 ZonedDateTime 對(duì)象,最后再使用 ZonedDateTime.toLocalDateTime 方法將其轉(zhuǎn)換為指定時(shí)區(qū)的 LocalDateTime 對(duì)象。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Test    public void test4() {        LocalDateTime localDateTime = LocalDateTime.parse("2023-11-2711:36:56", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));        System.out.println(localDateTime);//輸出結(jié)果:2023-11-2711:36:56    }

LocalDateTime#isSupported(...)

LocalDateTime#isSupported() 用于檢查是否支持特定的單位或字段。該方法接受一個(gè)參數(shù),可以是 TemporalUnit 或 TemporalField 對(duì)象,用于指定要檢查的單位或字段。如果支持,方法將返回 true;如果不支持,方法將返回 false。7Vr28資訊網(wǎng)——每日最新資訊28at.com

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 需要對(duì)日期時(shí)間進(jìn)行特定單位或字段的操作時(shí):如果需要在代碼中使用 LocalDateTime 對(duì)象進(jìn)行日期時(shí)間操作,并需要確保所使用的字段或單位是受支持的,可以使用 LocalDateTime#isSupported() 方法進(jìn)行檢查。例如,在執(zhí)行加減運(yùn)算之前,可以使用該方法檢查是否支持特定的時(shí)間單位。
  • 需要進(jìn)行日期時(shí)間格式驗(yàn)證時(shí):在使用 LocalDateTime 對(duì)象處理日期時(shí)間數(shù)據(jù)時(shí),可能需要對(duì)輸入數(shù)據(jù)進(jìn)行格式驗(yàn)證。通過(guò)調(diào)用 LocalDateTime#isSupported() 方法并傳遞相應(yīng)的單位或字段參數(shù),可以驗(yàn)證輸入數(shù)據(jù)是否符合要求。例如,可以檢查日期時(shí)間字符串是否包含不合法的字段或單位。
@Test    public void test5() {        LocalDateTime now = LocalDateTime.now();        boolean supported = now.isSupported(ChronoUnit.YEARS);        boolean supported1 = now.isSupported(ChronoField.DAY_OF_YEAR);        System.out.println(supported);//輸出結(jié)果:true        System.out.println(supported1);//輸出結(jié)果:true    }

LocalDateTime#range(...)

LocalDateTime#range(...) 用于獲取LocalDateTime對(duì)象指定字段的有效值范圍,返回值是一個(gè)ValueRange對(duì)象,range對(duì)象表示字段的最小和最大有效值。此日期時(shí)間用于提高返回范圍的準(zhǔn)確性。如果由于不支持該字段或其他原因而無(wú)法返回范圍,則會(huì)引發(fā)異常。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Test    public void test6() {        LocalDateTime now = LocalDateTime.of(2020, 2, 1, 12, 18, 56);        ValueRange range = now.range(ChronoField.DAY_OF_MONTH);        long maximum = range.getMaximum();        long minimum = range.getMinimum();        System.out.println(maximum);//輸出結(jié)果:29        System.out.println(minimum);//輸出結(jié)果:1        LocalDateTime now2 = LocalDateTime.of(2023, 2, 1, 12, 18, 56);        ValueRange range2 = now2.range(ChronoField.DAY_OF_MONTH);        long maximum2 = range2.getMaximum();        long minimum2 = range2.getMinimum();        System.out.println(maximum2);//輸出結(jié)果:28        System.out.println(minimum2);//輸出結(jié)果:1    }

LocalDateTime#get(...)、LocalDateTime#getLong(...)、LocalDateTime#getYear(...)、LocalDateTime#getMonthValue(...)、LocalDateTime#getMonth(...)、LocalDateTime#getDayOfMonth(...)、LocalDateTime#getDayOfYear(...)、LocalDateTime#getDayOfWeek(...)、LocalDateTime#getHour(...)、LocalDateTime#getMinute(...)、LocalDateTime#getSecond(...)、LocalDateTime#getNano(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime#get(TemporalField):此方法獲取給定時(shí)間字段的值。參數(shù)可以是年、月、日、時(shí)、分、秒或納秒等。它通常用于對(duì)日期和時(shí)間進(jìn)行精細(xì)操作或計(jì)算。
  • LocalDateTime#getLong(TemporalField):此方法獲取給定時(shí)間字段的長(zhǎng)整型值。它的使用場(chǎng)景與get方法類似,但返回值是長(zhǎng)整型的。
  • LocalDateTime#getYear():此方法返回當(dāng)前日期的年份。它通常用于進(jìn)行年份相關(guān)的計(jì)算或處理。
  • LocalDateTime#getMonthValue():此方法返回當(dāng)前月份的值,以整數(shù)形式表示。它通常用于處理或操作月份信息。
  • LocalDateTime#getMonth():此方法返回當(dāng)前月份的Text,如"January"、"February"等。它主要用于獲取月份的全稱。
  • LocalDateTime#getDayOfMonth():此方法返回當(dāng)前日期的日,以整數(shù)形式表示。它通常用于處理或操作具體的日期信息。
  • LocalDateTime#getDayOfYear():此方法返回當(dāng)前日期是一年中的第幾天,以整數(shù)形式表示。它主要用于計(jì)算或處理一年中的日期信息。
  • LocalDateTime#getDayOfWeek():此方法返回當(dāng)前日期是星期幾,以Text形式表示,如"Monday"、"Tuesday"等。它主要用于獲取星期的全稱。
  • LocalDateTime#getHour():此方法返回當(dāng)前時(shí)間的時(shí),以整數(shù)形式表示。它通常用于處理或操作具體的小時(shí)信息。
  • LocalDateTime#getMinute():此方法返回當(dāng)前時(shí)間的分,以整數(shù)形式表示。它通常用于處理或操作具體的分鐘信息。
  • LocalDateTime#getSecond():此方法返回當(dāng)前時(shí)間的秒,以整數(shù)形式表示。它通常用于處理或操作具體的秒信息。
  • LocalDateTime#getNano():此方法返回當(dāng)前時(shí)間的納秒,以整數(shù)形式表示。它主要用于獲取納秒級(jí)別的精度信息。
@Test    public void test7() {        LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);        int year = localDateTime.get(ChronoField.YEAR);        System.out.println(year);//輸出結(jié)果:2020        int month = localDateTime.get(ChronoField.MONTH_OF_YEAR);        System.out.println(month);//輸出結(jié)果:2        long yearLong = localDateTime.getLong(ChronoField.YEAR);        System.out.println(yearLong);//輸出結(jié)果:2020        long monthLong = localDateTime.getLong(ChronoField.MONTH_OF_YEAR);        System.out.println(monthLong);//輸出結(jié)果:2        int year1 = localDateTime.getYear();        System.out.println(year1);//輸出結(jié)果:2020        int monthValue = localDateTime.getMonthValue();        System.out.println(monthValue);//輸出結(jié)果:2        int dayOfMonth = localDateTime.getDayOfMonth();        System.out.println(dayOfMonth);//輸出結(jié)果:1        int dayOfYear = localDateTime.getDayOfYear();        System.out.println(dayOfYear);//輸出結(jié)果:32        DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();        int dayOfWeekValue = dayOfWeek.getValue();        System.out.println(dayOfWeekValue);//輸出結(jié)果:6        int hour = localDateTime.getHour();        System.out.println(hour);//輸出結(jié)果:12        int minute = localDateTime.getMinute();        System.out.println(minute);//輸出結(jié)果:18        int second = localDateTime.getSecond();        System.out.println(second);//輸出結(jié)果:56    }

LocalDateTime#toLocalDate(...)、LocalDateTime#toLocalTime(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • toLocalDate() 方法:該方法用于從 LocalDateTime 對(duì)象中獲取 LocalDate 對(duì)象。它返回一個(gè) LocalDate 實(shí)例,表示此 LocalDateTime 對(duì)象的日期部分。
  • toLocalTime() 方法:該方法用于從 LocalDateTime 對(duì)象中獲取 LocalTime 對(duì)象。它返回一個(gè) LocalTime 實(shí)例,表示此 LocalDateTime 對(duì)象的時(shí)間部分。
@Testpublic void test8() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    LocalDate localDate = localDateTime.toLocalDate();    LocalTime localTime = localDateTime.toLocalTime();    System.out.println(localDate);//輸出結(jié)果:2020-02-01    System.out.println(localTime);//輸出結(jié)果:12:18:56}

LocalDateTime#with(...)、LocalDateTime#withYear(...)、LocalDateTime#withMonth(...)、LocalDateTime#withDayOfMonth(...)、LocalDateTime#withDayOfYear(...)、LocalDateTime#withHour(...)、LocalDateTime#withMinute(...)、LocalDateTime#withSecond(...)、LocalDateTime#withNano(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

上述這些方法可以在不改變?nèi)掌诤蜁r(shí)間的其他部分的情況下,對(duì)日期和時(shí)間的特定部分進(jìn)行修改和操作。具體來(lái)說(shuō):7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime#with():該方法用于使用 TemporalAdjuster 調(diào)整此日期時(shí)間,并在調(diào)整后返回調(diào)整后的日期時(shí)間的副本。使用指定的調(diào)整器策略對(duì)象進(jìn)行調(diào)整。
  • LocalDateTime#withYear():該方法用于獲取此 LocalDateTime 的副本,并將年份更改為作為該方法的參數(shù)傳遞的年份。此 LocalDateTime 的其余值保持不變。年份的值范圍可以從 MIN_YEAR 到 MAX_YEAR。
  • LocalDateTime#withMonth():該方法用于獲取此 LocalDateTime 的副本,并將月份更改為作為該方法的參數(shù)傳遞的月份。此 LocalDateTime 的其余值保持不變。月份的值范圍從 1 到 12。
  • LocalDateTime#withDayOfMonth():該方法用于獲取此 LocalDateTime 的副本,并將日更改為作為該方法的參數(shù)傳遞的日。此 LocalDateTime 的其余值保持不變。日的值范圍從 1 到月份的天數(shù)。
  • LocalDateTime#withDayOfYear():該方法用于獲取此 LocalDateTime 的副本,并將一年中的日子更改為作為該方法的參數(shù)傳遞的日子。此 LocalDateTime 的其余值保持不變。天的值范圍從 1 到 365 或 366(取決于年份是否為閏年)。
  • LocalDateTime#withHour():該方法用于獲取此 LocalDateTime 的副本,并將小時(shí)更改為作為該方法的參數(shù)傳遞的小時(shí)。此 LocalDateTime 的其余值保持不變。小時(shí)的值范圍從 0 到 23。
  • LocalDateTime#withMinute():該方法用于獲取此 LocalDateTime 的副本,并將分鐘更改為作為該方法的參數(shù)傳遞的分鐘。此 LocalDateTime 的其余值保持不變。分鐘的值的范圍從 0 到 59。
  • LocalDateTime#withSecond():該方法用于獲取此 LocalDateTime 的副本,并將秒更改為作為該方法的參數(shù)傳遞的秒。此 LocalDateTime 的其余值保持不變。秒的值范圍從 0 到 59(或 60,如果該秒是閏秒)。
  • LocalDateTime#withNano():該方法用于獲取此 LocalDateTime 的副本,并將納秒更改為作為該方法的參數(shù)傳遞的納秒。此 LocalDateTime 的其余值保持不變。納秒的值范圍從 0 到 999,999,999。
@Testpublic void test9() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    TemporalAdjuster temporalAdjuster = item -> item.plus(1, ChronoUnit.HOURS);    LocalDateTime localDateTime1 = localDateTime.with(temporalAdjuster);    System.out.println(localDateTime1);//輸出結(jié)果:2020-02-01T13:18:56    LocalDateTime localDateTime2 = localDateTime.with(ChronoField.HOUR_OF_DAY, 1);    System.out.println(localDateTime2);//輸出結(jié)果:2020-02-01T01:18:56    LocalDateTime localDateTime3 = localDateTime.withYear(2023);    System.out.println(localDateTime3);//輸出結(jié)果:2023-02-01T12:18:56    LocalDateTime localDateTime4 = localDateTime.withMonth(1);    System.out.println(localDateTime4);//輸出結(jié)果:2020-01-01T12:18:56    LocalDateTime localDateTime5 = localDateTime.withDayOfMonth(10);    System.out.println(localDateTime5);//輸出結(jié)果:2020-02-10T12:18:56    LocalDateTime localDateTime6 = localDateTime.withHour(18);    System.out.println(localDateTime6);//輸出結(jié)果:2020-02-01T18:18:56    LocalDateTime localDateTime7 = localDateTime.withMinute(30);    System.out.println(localDateTime7);//輸出結(jié)果:2020-02-01T12:30:56    LocalDateTime localDateTime8 = localDateTime.withSecond(59);    System.out.println(localDateTime8);//輸出結(jié)果:2020-02-01T12:18:59}

LocalDateTime#truncatedTo(...)

LocalDateTime#truncatedTo()用于將當(dāng)前LocalDateTime對(duì)象的時(shí)間部分截?cái)嗟浇o定的時(shí)間單位。7Vr28資訊網(wǎng)——每日最新資訊28at.com

功能作用:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 截?cái)嗳掌跁r(shí)間:通過(guò)調(diào)用LocalDateTime#truncatedTo()方法,可以將當(dāng)前LocalDateTime對(duì)象的時(shí)間部分截?cái)嗟浇o定的時(shí)間單位,例如分鐘、小時(shí)、天等。截?cái)嗪蟮腖ocalDateTime對(duì)象將不再包含被截?cái)鄦挝恢暗臅r(shí)間信息。
  • 提供靈活的時(shí)間操作:使用LocalDateTime#truncatedTo()方法可以根據(jù)具體需求將日期時(shí)間截?cái)嗟讲煌臅r(shí)間單位,從而實(shí)現(xiàn)靈活的時(shí)間操作。例如,可以將日期時(shí)間截?cái)嗟椒昼娂?jí)別,然后進(jìn)行加減運(yùn)算,以實(shí)現(xiàn)精確到分鐘的日期時(shí)間計(jì)算。

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 需要截?cái)嗳掌跁r(shí)間時(shí):在一些特定的應(yīng)用場(chǎng)景中,可能需要對(duì)日期時(shí)間進(jìn)行截?cái)嗖僮鳌@?,在進(jìn)行統(tǒng)計(jì)或數(shù)據(jù)分析時(shí),可能只需要日期時(shí)間中的某一部分信息,而不需要保留完整的時(shí)間信息。在這種情況下,可以使用LocalDateTime#truncatedTo()方法將日期時(shí)間截?cái)嗟剿璧臅r(shí)間單位。
  • 需要進(jìn)行時(shí)間運(yùn)算時(shí):在進(jìn)行時(shí)間運(yùn)算時(shí),如計(jì)算兩個(gè)日期時(shí)間之間的差值或進(jìn)行日期的加減運(yùn)算等,可以將日期時(shí)間截?cái)嗟椒昼娀蛐r(shí)級(jí)別,以避免因毫秒級(jí)的時(shí)間差異而產(chǎn)生誤差。例如,可以使用LocalDateTime#truncatedTo()方法將日期時(shí)間截?cái)嗟椒昼娂?jí)別,然后進(jìn)行加減運(yùn)算,以實(shí)現(xiàn)精確到分鐘的日期時(shí)間計(jì)算。
@Testpublic void test10() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    LocalDateTime localDateTime1 = localDateTime.truncatedTo(ChronoUnit.DAYS);    System.out.println(localDateTime1);//輸出結(jié)果:2020-02-01T00:00}

LocalDateTime#plus(...)、LocalDateTime#plusYears(...)、LocalDateTime#plusMonths(...)、LocalDateTime#plusWeeks(...)、LocalDateTime#plusDays(...)、LocalDateTime#plusHours(...)、LocalDateTime#plusMinutes(...)、LocalDateTime#plusSeconds(...)、LocalDateTime#plusNanos(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

上述方法,主要用于在現(xiàn)有的日期時(shí)間對(duì)象上增加指定的時(shí)間單位或量。7Vr28資訊網(wǎng)——每日最新資訊28at.com

具體如下:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime#plus(long amount, TemporalUnit unit):增加給定數(shù)量的單位到當(dāng)前的日期時(shí)間對(duì)象。參數(shù)amount表示要增加的數(shù)量,參數(shù)unit表示要增加的時(shí)間單位,例如DAYS、WEEKS、MONTHS等。
  • LocalDateTime#plusYears(long years):在當(dāng)前日期時(shí)間對(duì)象上增加指定的年份數(shù)。參數(shù)years表示要增加的年份數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusMonths(long months):在當(dāng)前日期時(shí)間對(duì)象上增加指定的月份數(shù)。參數(shù)months表示要增加的月份數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusWeeks(long weeks):在當(dāng)前日期時(shí)間對(duì)象上增加指定的周數(shù)。參數(shù)weeks表示要增加的周數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusDays(long days):在當(dāng)前日期時(shí)間對(duì)象上增加指定的天數(shù)。參數(shù)days表示要增加的天數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusHours(long hours):在當(dāng)前日期時(shí)間對(duì)象上增加指定的小時(shí)數(shù)。參數(shù)hours表示要增加的小時(shí)數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusMinutes(long minutes):在當(dāng)前日期時(shí)間對(duì)象上增加指定的分鐘數(shù)。參數(shù)minutes表示要增加的分鐘數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusSeconds(long seconds):在當(dāng)前日期時(shí)間對(duì)象上增加指定的秒數(shù)。參數(shù)seconds表示要增加的秒數(shù),可以為負(fù)數(shù)。
  • LocalDateTime#plusNanos(long nanos):在當(dāng)前日期時(shí)間對(duì)象上增加指定的納秒數(shù)。參數(shù)nanos表示要增加的納秒數(shù),可以為負(fù)數(shù)。

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 日期時(shí)間的計(jì)算和運(yùn)算:可以通過(guò)調(diào)用這些方法來(lái)對(duì)日期時(shí)間進(jìn)行計(jì)算和運(yùn)算。例如,可以使用LocalDateTime#plusYears()方法來(lái)計(jì)算未來(lái)某一年的日期時(shí)間,或者使用LocalDateTime#plusDays()方法來(lái)計(jì)算未來(lái)某一天的日期時(shí)間。
  • 定時(shí)器和定時(shí)任務(wù):這些方法可以與Java中的定時(shí)器類(如java.util.Timer)結(jié)合使用,以實(shí)現(xiàn)定時(shí)任務(wù)或定時(shí)觸發(fā)某些操作。例如,可以使用LocalDateTime#now()方法獲取當(dāng)前日期時(shí)間,然后將其作為定時(shí)器的觸發(fā)時(shí)間。
  • 時(shí)間的調(diào)整和格式化:可以使用這些方法來(lái)對(duì)日期時(shí)間進(jìn)行調(diào)整和格式化。例如,可以使用LocalDateTime#plusHours()方法來(lái)將當(dāng)前時(shí)間向前移動(dòng)幾個(gè)小時(shí),或者使用LocalDateTime#format()方法將日期時(shí)間格式化為特定的字符串格式。
  • 日歷和日程安排:這些方法可以用于日歷和日程安排應(yīng)用中。例如,可以使用LocalDateTime#plusMonths()方法來(lái)計(jì)算下個(gè)月的日期時(shí)間,或者使用LocalDateTime#plusWeeks()方法來(lái)計(jì)算未來(lái)一周的日期時(shí)間。
@Testpublic void test11() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    LocalDateTime localDateTime1 = localDateTime.plus(Period.ofDays(3));    LocalDateTime localDateTime2 = localDateTime.plus(3, ChronoUnit.DAYS);    System.out.println(localDateTime1);//輸出結(jié)果:2020-02-04T12:18:56    System.out.println(localDateTime2);//輸出結(jié)果:2020-02-04T12:18:56    LocalDateTime localDateTime3 = localDateTime.plusYears(1);    System.out.println(localDateTime3);//輸出結(jié)果:2021-02-01T12:18:56    LocalDateTime localDateTime4 = localDateTime.plusMonths(1);    System.out.println(localDateTime4);//輸出結(jié)果:2020-03-01T12:18:56    LocalDateTime localDateTime5 = localDateTime.plusWeeks(1);    System.out.println(localDateTime5);//輸出結(jié)果:2020-02-08T12:18:56    LocalDateTime localDateTime6 = localDateTime.plusDays(10);    System.out.println(localDateTime6);//輸出結(jié)果:2020-02-11T12:18:56    LocalDateTime localDateTime7 = localDateTime.plusHours(3);    System.out.println(localDateTime7);//輸出結(jié)果:2020-02-01T15:18:56    LocalDateTime localDateTime8 = localDateTime.plusMinutes(12);    System.out.println(localDateTime8);//輸出結(jié)果:2020-02-01T12:30:56    LocalDateTime localDateTime9 = localDateTime.plusSeconds(4);    System.out.println(localDateTime9);//輸出結(jié)果:2020-02-01T12:19}

LocalDateTime#minus(...)、LocalDateTime#minusYears(...)、LocalDateTime#minusMonths(...)、LocalDateTime#minusWeeks(...)、LocalDateTime#minusDays(...)、LocalDateTime#minusHours(...)、LocalDateTime#minusMinutes(...)、LocalDateTime#minusSeconds(...)、LocalDateTime#minusNanos(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

上述這些方法,用于對(duì)日期和時(shí)間的減法操作,需要注意的是,這些方法的計(jì)算結(jié)果值超過(guò)限制時(shí)可能會(huì)拋出DateTimeException異常。7Vr28資訊網(wǎng)——每日最新資訊28at.com

具體如下:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • LocalDateTime#minus():該方法用于在當(dāng)前LocalDateTime對(duì)象中減去指定的時(shí)間間隔。它接受一個(gè)TemporalAmount參數(shù),表示要減去的金額。返回值是此日期時(shí)間的副本,減去指定的金額。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的時(shí)間間隔。
  • LocalDateTime#minusYears():該方法用于從此日期時(shí)間對(duì)象中減去給定的年份并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的年份數(shù)。返回值是保存從該LocalDateTime減去給定年份的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的年份數(shù)。
  • LocalDateTime#minusMonths():該方法用于從此日期時(shí)間對(duì)象中減去給定的月份并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的月份數(shù)。返回值是保存從該LocalDateTime減去給定月份的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的月份數(shù)。
  • LocalDateTime#minusWeeks():該方法用于從此日期時(shí)間對(duì)象中減去給定的周數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的周數(shù)數(shù)。返回值是保存從該LocalDateTime減去給定周數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的周數(shù)數(shù)。
  • LocalDateTime#minusDays():該方法用于從此日期時(shí)間對(duì)象中減去給定的天數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的天數(shù)數(shù)。返回值是保存從該LocalDateTime減去給定天數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的天數(shù)數(shù)。
  • LocalDateTime#minusHours():該方法用于從此日期時(shí)間對(duì)象中減去給定的小時(shí)數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的小時(shí)數(shù)。返回值是保存從該LocalDateTime減去給定小時(shí)數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的小時(shí)數(shù)。
  • LocalDateTime#minusMinutes():該方法用于從此日期時(shí)間對(duì)象中減去給定的分鐘數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的分鐘數(shù)。返回值是保存從該LocalDateTime減去給定分鐘數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的分鐘數(shù)。
  • LocalDateTime#minusSeconds():該方法用于從此日期時(shí)間對(duì)象中減去給定的秒數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的秒數(shù)。返回值是保存從該LocalDateTime減去給定秒數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的秒數(shù)。
  • LocalDateTime#minusNanos():該方法用于從此日期時(shí)間對(duì)象中減去給定的納秒數(shù)并返回LocalDateTime。它接受一個(gè)long類型的參數(shù),表示要減去的納秒數(shù)。返回值是保存從該LocalDateTime減去給定納秒數(shù)的值的LocalDateTime。使用場(chǎng)景:在進(jìn)行高精度日期時(shí)間的減法操作時(shí),可以使用該方法來(lái)減去指定的納秒數(shù)。
@Testpublic void test12() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    LocalDateTime localDateTime1 = localDateTime.minus(Period.ofDays(3));    LocalDateTime localDateTime2 = localDateTime.minus(3, ChronoUnit.DAYS);    System.out.println(localDateTime1);//輸出結(jié)果:2020-01-29T12:18:56    System.out.println(localDateTime2);//輸出結(jié)果:2020-01-29T12:18:56    LocalDateTime localDateTime3 = localDateTime.minusYears(1);    System.out.println(localDateTime3);//輸出結(jié)果:2019-02-01T12:18:56    LocalDateTime localDateTime4 = localDateTime.minusMonths(1);    System.out.println(localDateTime4);//輸出結(jié)果:2020-01-01T12:18:56    LocalDateTime localDateTime5 = localDateTime.minusWeeks(1);    System.out.println(localDateTime5);//2020-01-25T12:18:56    LocalDateTime localDateTime6 = localDateTime.minusDays(10);    System.out.println(localDateTime6);//輸出結(jié)果:2020-01-22T12:18:56    LocalDateTime localDateTime7 = localDateTime.minusHours(3);    System.out.println(localDateTime7);//輸出結(jié)果:2020-02-01T09:18:56    LocalDateTime localDateTime8 = localDateTime.minusMinutes(12);    System.out.println(localDateTime8);//輸出結(jié)果:2020-02-01T12:06:56    LocalDateTime localDateTime9 = localDateTime.minusSeconds(4);    System.out.println(localDateTime9);//輸出結(jié)果:2020-02-01T12:18:52}

LocalDateTime#query(...)

LocalDateTime#query()接受一個(gè)TemporalQuery作為參數(shù),用于查詢此LocalDateTime。查詢的結(jié)果會(huì)根據(jù)傳遞的查詢邏輯來(lái)決定。通常在需要基于特定的查詢邏輯處理日期和時(shí)間的情況下使用。傳遞給查詢方法的邏輯是通過(guò)TemporalQuery對(duì)象定義的。因此,這個(gè)方法在使用時(shí)需要結(jié)合具體的查詢需求和TemporalQuery的實(shí)現(xiàn)來(lái)使用。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void test13() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    TemporalQuery<Integer> temporalQuery = item -> item.get(ChronoField.YEAR);    Integer year = localDateTime.query(temporalQuery);    System.out.println(year);//輸出結(jié)果:2020}

LocalDateTime#until(...)

LocalDateTime#until() 方法用于計(jì)算兩個(gè) LocalDateTime 對(duì)象之間的時(shí)間量,并以指定的 TemporalUnit 為單位返回結(jié)果。這個(gè)方法返回一個(gè)整數(shù),表示兩個(gè) LocalDateTime 對(duì)象之間完整的時(shí)間單位數(shù)。7Vr28資訊網(wǎng)——每日最新資訊28at.com

功能作用:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 計(jì)算時(shí)間差:LocalDateTime#until() 方法可以計(jì)算兩個(gè) LocalDateTime 對(duì)象之間的時(shí)間差。通過(guò)調(diào)用該方法并傳遞一個(gè) TemporalUnit 參數(shù),可以獲取兩個(gè)日期時(shí)間之間的差距,單位可以是秒、分鐘、小時(shí)、天等。
  • 提供靈活的時(shí)間計(jì)算:使用 LocalDateTime#until() 方法可以根據(jù)具體需求計(jì)算不同時(shí)間單位之間的差值。這使得開(kāi)發(fā)者能夠根據(jù)實(shí)際需求進(jìn)行精確到秒、分鐘、小時(shí)或天的時(shí)間計(jì)算,以滿足不同的業(yè)務(wù)需求。

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 需要計(jì)算時(shí)間差時(shí):在一些特定的應(yīng)用場(chǎng)景中,可能需要對(duì)兩個(gè)日期時(shí)間之間的時(shí)間差進(jìn)行計(jì)算。例如,在記錄用戶活動(dòng)日志時(shí),需要計(jì)算用戶兩次操作之間的時(shí)間差,以便對(duì)用戶行為進(jìn)行分析。在這種情況下,可以使用 LocalDateTime#until() 方法來(lái)獲取準(zhǔn)確的時(shí)間差值。
  • 需要進(jìn)行時(shí)間運(yùn)算時(shí):除了計(jì)算時(shí)間差,LocalDateTime#until() 方法還可以用于時(shí)間運(yùn)算。例如,可以使用該方法計(jì)算兩個(gè)日期之間的天數(shù),然后根據(jù)計(jì)算結(jié)果進(jìn)行相應(yīng)的操作。這可以幫助開(kāi)發(fā)者在處理日期時(shí)間時(shí)提高計(jì)算的準(zhǔn)確性和靈活性。
@Testpublic void test14() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    long until = localDateTime.until(LocalDateTime.of(2023, 2, 1, 12, 30, 56), ChronoUnit.YEARS);    System.out.println(until);//輸出結(jié)果:3}

LocalDateTime#format(...)

LocalDateTime#format(...)用于將當(dāng)前 LocalDateTime 對(duì)象格式化為指定的日期時(shí)間字符串。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void test15() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));    System.out.println(format);//輸出結(jié)果:2020-02-01 12:18:56}

LocalDateTime#atOffset(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

LocalDateTime#atOffset() 主要是用于合并當(dāng)前LocalDateTime對(duì)象與給定的偏移量。具體來(lái)說(shuō),該方法創(chuàng)建并返回一個(gè) OffsetDateTime 對(duì)象,該對(duì)象將保存將當(dāng)前LocalDateTime 與給定偏移量合并后的值。主要在需要對(duì)LocalDateTime對(duì)象進(jìn)行偏移量調(diào)整的情況下使用。例如,如果你需要根據(jù)當(dāng)前的LocalDateTime創(chuàng)建一個(gè)在特定偏移量(如一小時(shí),一天)后的日期時(shí)間,就可以通過(guò)使用LocalDateTime#atOffset()方法來(lái)實(shí)現(xiàn)。這個(gè)方法的使用非常靈活,你可以根據(jù)需要選擇不同的偏移量進(jìn)行合并,得到的 OffsetDateTime 對(duì)象可以用于進(jìn)一步的日期時(shí)間計(jì)算或展示等操作。7Vr28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void test16() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    OffsetDateTime offsetDateTime = localDateTime.atOffset(ZoneOffset.ofHours(8));    System.out.println(offsetDateTime);//輸出結(jié)果:2020-02-01T12:18:56+08:00}

LocalDateTime#atZone(...)

LocalDateTime#atZone()用于將給定的LocalDateTime對(duì)象合并到給定的時(shí)區(qū),從而創(chuàng)建一個(gè)ZonedDateTime對(duì)象。該方法是一個(gè)非靜態(tài)方法,只能通過(guò)類對(duì)象訪問(wèn)。通過(guò)該方法,可以將在不同時(shí)區(qū)存儲(chǔ)的日期時(shí)間數(shù)據(jù)統(tǒng)一到一個(gè)時(shí)區(qū)中進(jìn)行處理和比較。7Vr28資訊網(wǎng)——每日最新資訊28at.com

使用場(chǎng)景:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 需要處理跨時(shí)區(qū)的日期時(shí)間數(shù)據(jù)時(shí):在一些特定的應(yīng)用場(chǎng)景中,可能需要對(duì)來(lái)自不同時(shí)區(qū)的日期時(shí)間數(shù)據(jù)進(jìn)行處理和比較。例如,在跨國(guó)公司中,可能需要將不同地區(qū)的日期時(shí)間數(shù)據(jù)統(tǒng)一到一個(gè)時(shí)區(qū)中進(jìn)行統(tǒng)計(jì)分析。在這種情況下,可以使用LocalDateTime#atZone()方法將LocalDateTime對(duì)象轉(zhuǎn)換為ZonedDateTime對(duì)象,以便進(jìn)行跨時(shí)區(qū)的日期時(shí)間操作。
  • 需要確保日期時(shí)間數(shù)據(jù)的一致性時(shí):在一些需要確保日期時(shí)間數(shù)據(jù)一致性的場(chǎng)景中,也可以使用LocalDateTime#atZone()方法。例如,在金融交易中,確保交易時(shí)間的準(zhǔn)確性非常重要。通過(guò)使用該方法,可以將不同地區(qū)的日期時(shí)間數(shù)據(jù)轉(zhuǎn)換為相同的時(shí)區(qū),以確保交易時(shí)間的一致性。
@Testpublic void test17() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());    System.out.println(zonedDateTime);//輸出結(jié)果:2020-02-01T12:18:56+08:00[Asia/Shanghai]}

LocalDateTime#compareTo(...)、LocalDateTime#isAfter(...)、LocalDateTime#isBefore(...)、LocalDateTime#isEqual(...)7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • compareTo(...):此方法用于比較當(dāng)前LocalDateTime實(shí)例和其他日期時(shí)間的大小關(guān)系。它返回一個(gè)整數(shù),如果當(dāng)前實(shí)例大于、小于或等于給定的日期時(shí)間,則返回正整數(shù)、負(fù)整數(shù)或零。這個(gè)方法通常用于排序或比較日期時(shí)間的大小。
  • isAfter(...):此方法用于檢查作為參數(shù)傳遞的日期是否在此LocalDateTime實(shí)例之后。它返回一個(gè)布爾值,如果給定的日期時(shí)間小于當(dāng)前實(shí)例,則返回false,否則返回true。這個(gè)方法通常用于判斷某個(gè)日期時(shí)間是否在當(dāng)前時(shí)間之后。
  • isBefore(...):此方法的功能與isAfter()相反,用于檢查作為參數(shù)傳遞的日期是否在此LocalDateTime實(shí)例之前。返回值與isAfter()相同,如果給定的日期時(shí)間大于當(dāng)前實(shí)例,則返回false,否則返回true。這個(gè)方法通常用于判斷某個(gè)日期時(shí)間是否在當(dāng)前時(shí)間之前。
  • isEqual(...):此方法用于檢查作為參數(shù)傳遞的日期是否與當(dāng)前LocalDateTime實(shí)例相等。它返回一個(gè)布爾值,如果兩個(gè)實(shí)例的時(shí)間值完全相等,則返回true,否則返回false。這個(gè)方法通常用于比較兩個(gè)日期時(shí)間是否完全相同。
@Testpublic void test18() {    LocalDateTime localDateTime = LocalDateTime.of(2020, 2, 1, 12, 18, 56);    LocalDateTime localDateTime2 = LocalDateTime.of(2023, 2, 1, 12, 18, 56);    int compareTo = localDateTime2.compareTo(localDateTime);    System.out.println(compareTo);//輸出結(jié)果:3    boolean before = localDateTime2.isBefore(localDateTime);    System.out.println(before);//輸出結(jié)果:false    boolean after = localDateTime2.isAfter(localDateTime);    System.out.println(after);//輸出結(jié)果:true    boolean equal = localDateTime2.isEqual(localDateTime);    System.out.println(equal);//輸出結(jié)果:false}

使用LocalDateTime的注意事項(xiàng)

在使用 LocalDateTime 時(shí),有一些注意事項(xiàng)需要特別注意,了解這些限制和注意事項(xiàng)可以確保正確有效地使用它:7Vr28資訊網(wǎng)——每日最新資訊28at.com

  • 時(shí)區(qū)問(wèn)題:LocalDateTime 不包含時(shí)區(qū)信息,這可能會(huì)導(dǎo)致在處理具有時(shí)區(qū)差異的日期和時(shí)間時(shí)出現(xiàn)問(wèn)題。
  • 精度問(wèn)題:LocalDateTime 精度到秒,不包含毫秒,這可能在某些需要更高精度的情況下會(huì)限制其使用。
  • 不可變對(duì)象:LocalDateTime 是一個(gè)不可變對(duì)象,這意味著對(duì) LocalDateTime 對(duì)象的任何修改操作都會(huì)生成一個(gè)新的實(shí)例返回,而不會(huì)改變?cè)瓉?lái)的對(duì)象。這使得多線程操作中無(wú)需考慮線程安全問(wèn)題,因?yàn)楸旧?API 層面就不支持修改。
  • 空指針異常:在使用 LocalDateTime 的 get 方法訪問(wèn)年、月、日等信息時(shí),需要注意空指針異常的問(wèn)題??梢允褂?isPresent() 方法來(lái)檢查是否存在值。
  • 日期/時(shí)間格式化:LocalDateTime 沒(méi)有提供內(nèi)置的格式化方法,因此在使用時(shí)需要注意格式化問(wèn)題??梢允褂?DateTimeFormatter 類來(lái)進(jìn)行日期/時(shí)間格式化。
  • 與其它日期/時(shí)間類型的轉(zhuǎn)換:在使用 LocalDateTime 時(shí),可能需要將其與其它日期/時(shí)間類型進(jìn)行轉(zhuǎn)換,如 LocalDate、LocalTime、ZonedDateTime 等。在進(jìn)行轉(zhuǎn)換時(shí),需要注意時(shí)區(qū)、精度等差異,以避免可能的問(wèn)題。
  • 時(shí)區(qū)處理:雖然 LocalDateTime 不包含時(shí)區(qū)信息,但在某些情況下可能需要考慮時(shí)區(qū)的影響。例如,在將 LocalDateTime 轉(zhuǎn)換為 ZonedDateTime 時(shí),需要提供時(shí)區(qū)信息。
  • 時(shí)間戳的獲取和比較:LocalDateTime 可以用于獲取當(dāng)前時(shí)間戳(以毫秒為單位)以及進(jìn)行時(shí)間戳的比較。在進(jìn)行時(shí)間戳比較時(shí),需要注意時(shí)區(qū)、精度等差異。
  • 與數(shù)據(jù)庫(kù)中的日期/時(shí)間類型的轉(zhuǎn)換:在將 LocalDateTime 與數(shù)據(jù)庫(kù)中的日期/時(shí)間類型進(jìn)行轉(zhuǎn)換時(shí),需要注意數(shù)據(jù)庫(kù)中日期/時(shí)間的格式和類型,以及可能的時(shí)區(qū)差異。

本文鏈接:http://www.tebozhan.com/showinfo-26-72428-0.html深入了解Java 8 新特性-日期時(shí)間API之LocalDateTime類

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Python開(kāi)發(fā)者的必備知識(shí):內(nèi)存管理與垃圾回收

下一篇: 【踩坑指南】線程池使用不當(dāng)?shù)奈鍌€(gè)坑

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來(lái)預(yù)熱,公布了內(nèi)存方面的信息?!疤蕴?8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請(qǐng)期待。”同時(shí)
  • 一加Ace2 Pro真機(jī)揭曉 鈦空灰配色質(zhì)感拉滿

    終于,在經(jīng)過(guò)了幾波預(yù)熱之后,一加Ace2 Pro的外觀真機(jī)圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設(shè)計(jì)還是延續(xù)了一加11的方案,只是細(xì)節(jié)上有了調(diào)整,例如新加入了鈦空灰
  • vivo TWS Air開(kāi)箱體驗(yàn):真輕 臻好聽(tīng)

    在vivo S15系列新機(jī)的發(fā)布會(huì)上,vivo的最新款真無(wú)線藍(lán)牙耳機(jī)vivo TWS Air也一同發(fā)布,本次就這款耳機(jī)新品給大家?guī)?lái)一個(gè)簡(jiǎn)單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產(chǎn)
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問(wèn)的變量。在Python中,可以使用threading模塊中的L
  • ESG的面子與里子

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是&ldquo;環(huán)境保
  • 馮提莫簽約抖音公會(huì) 前“斗魚一姐”消失在直播間

    來(lái)源:直播觀察提起&ldquo;馮提莫&rdquo;這個(gè)名字,很多網(wǎng)友或許聽(tīng)過(guò),但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的&ldquo;斗魚一姐&rdquo;,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 半導(dǎo)體需求下滑 三星電子DS業(yè)務(wù)部門今年?duì)I業(yè)虧損預(yù)計(jì)超10萬(wàn)億韓元

    7月17日消息,據(jù)外媒報(bào)道,去年下半年開(kāi)始的半導(dǎo)體需求下滑,影響到了三星電子、SK海力士、英特爾等諸多廠商,營(yíng)收明顯下滑,部分廠商甚至出現(xiàn)了虧損。作為
  • OPPO K11采用全方位護(hù)眼屏:三大護(hù)眼能力減輕視覺(jué)疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發(fā)布,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣點(diǎn)就是將配備索尼IMX890主攝,堪稱是2000檔位影像表
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購(gòu)買

    2022年1月份在國(guó)際消費(fèi)電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購(gòu)買了,這款筆記本電腦被譽(yù)為世界上最薄的 14 英寸游戲筆
Top