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

java8之LocalDate的使用、LocalDate格式化問題

 更新時(shí)間:2023年04月25日 10:32:08   作者:五月天的尾巴  
這篇文章主要介紹了java8之LocalDate的使用、LocalDate格式化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

Java 8里面添加了許多的新特性,其中一個(gè)最常見也是最實(shí)用的便是日期處理的類——LocalDate。

新增的日期類主要有三種:

  • java.time.LocalDate ->只對(duì)年月日做出處理
  • java.time.LocalTime ->只對(duì)時(shí)分秒納秒做出處理
  • java.time.LocalDateTime ->同時(shí)可以處理年月日和時(shí)分秒

LocalDate:默認(rèn)返回一個(gè)日期格式為yyyy-MM-dd格式的日期

一:創(chuàng)建LocalDate

方法說明
static LocalDate now()獲取默認(rèn)時(shí)區(qū)的當(dāng)前日期,默認(rèn)返回格式y(tǒng)yyy-MM-dd
static LocalDate now(Clock clock)從指定時(shí)鐘獲取當(dāng)前日期
static LocalDate now(ZoneId zone)獲取指定時(shí)區(qū)的當(dāng)前日期
static LocalDate of(int year, int month, int dayOfMonth)根據(jù)指定的年、月、日獲取LocalDate 實(shí)例
static LocalDate of(int year, Month month, int dayOfMonth)根據(jù)指定的年、月、日獲取LocalDate 實(shí)例
static LocalDate ofYearDay(int year,int dayOfYear)根據(jù)指定的年,年中的第xx天獲取LocalDate實(shí)例
static LocalDate ofEpochDay(long epochDay)從1970-01-01開始獲取指定天數(shù)的LocalDate實(shí)例
static LocalDate parse(CharSequence text)將字符串轉(zhuǎn)換為LocalDate,字符串的格式必須為yyyy-MM-dd 10位長度的日期格式,否則會(huì)報(bào)錯(cuò)
static LocalDate parse(CharSequence text, DateTimeFormatter formatter)將text字符串轉(zhuǎn)換為formatter格式,text的格式必須與formatter格式一致,如text為yyyyMMdd格式,則formatter也應(yīng)該為yyyyMMdd格式,否則會(huì)報(bào)錯(cuò)

1、now()

從默認(rèn)時(shí)區(qū)的系統(tǒng)時(shí)鐘中獲取當(dāng)前日期。默認(rèn)輸出格式為yyyy-MM-dd

LocalDate localDate = LocalDate.now();
System.out.println(localDate);

2021-11-29

2、now(Clock clock)

從指定時(shí)鐘獲取當(dāng)前日期。

LocalDate l = LocalDate.now(Clock.systemDefaultZone());
System.out.println(l);

System.out.println(Clock.systemDefaultZone());//方法返回帶有系統(tǒng)默認(rèn)時(shí)區(qū)的Clock實(shí)例。
System.out.println(Clock.systemUTC());//此方法返回帶有UTC時(shí)區(qū)的Clock實(shí)例。
2021-11-29

SystemClock[Asia/Shanghai]
SystemClock[Z]

3、now(ZoneId zone)

從指定時(shí)區(qū)的系統(tǒng)時(shí)鐘中獲取當(dāng)前日期。

LocalDate l = LocalDate.now(ZoneId.of("UTC+1"));
System.out.println(l);

2021-11-29

時(shí)區(qū)是用ZoneId類表示的,你可以使用ZoneId.now()或ZoneId.of(“xxx”)來實(shí)例化:

ZoneId zoneId = ZoneId.of("UTC+1");

傳給of()方法的參數(shù)是時(shí)區(qū)的ID,如“UTC+1”指距離UTC(格林威治時(shí)間)有一小時(shí)的時(shí)差,你可以使用你想要的時(shí)差來表示ZoneId(如+1與-5等等)

你也可以使用另一種方式表示zone id,即使用地區(qū)名字,也是可以的:

ZoneId zoneId2 = ZoneId.of("Europe/Copenhagen");
ZoneId zoneId3 = ZoneId.of("Europe/Paris");

4、of(int year, int month, int dayOfMonth)

從年、月和日獲取LocalDate實(shí)例

LocalDate l = LocalDate.of(2021, 11, 29);
System.out.println(l);

2021-11-29

5、ofYearDay(int year,int dayOfYear)

從指定年的指定天獲取LocalDate實(shí)例

//獲取2021年第230天的日期
LocalDate l = LocalDate.ofYearDay(2021, 230);
System.out.println(l);

2021-08-18

6、ofEpochDay(long epochDay)

從1970-01-01開始獲取指定天數(shù)的LocalDate實(shí)例

LocalDate l = LocalDate.ofEpochDay(0);//1970-01-01
LocalDate l1 = LocalDate.ofEpochDay(-10);//1969-12-22
LocalDate l2 = LocalDate.ofEpochDay(10);//1970-01-11

7、parse(CharSequence text)

將字符串轉(zhuǎn)換為LocalDate,字符串的格式必須為yyyy-MM-dd 10位長度的日期格式,否則會(huì)報(bào)錯(cuò),字符串必須是一個(gè)合法的日期,否則會(huì)報(bào)錯(cuò)

LocalDate l = LocalDate.parse("2021-01-29");
System.out.println(l); //2021-01-29

錯(cuò)誤示例:

//日期格式非yyyy-MM-dd
LocalDate l = LocalDate.parse("2021-1-29");
//日期格式非yyyy-MM-dd
LocalDate l = LocalDate.parse("2021/01/29");
//字符串不是一個(gè)合法的日期,2月沒有30號(hào)
LocalDate l = LocalDate.parse("2021-02-30");

若parse(CharSequence text)中傳入的格式非yyyy-MM-dd或不合法,會(huì)拋出異常,且長度需要是10位

Exception in thread "main" java.time.format.DateTimeParseException: Text '2021/11/29' could not be parsed at index 4
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
    at java.base/java.time.LocalDate.parse(LocalDate.java:428)
    at java.base/java.time.LocalDate.parse(LocalDate.java:413)
    at com.aexpec.mic.merchant.controller.Test.main(Test.java:19)

8、parse(CharSequence text, DateTimeFormatter formatter)

將text字符串轉(zhuǎn)換為formatter格式,text的格式必須與formatter格式一致,如text為yyyyMMdd格式,則formatter也應(yīng)該為yyyyMMdd格式,否則會(huì)報(bào)錯(cuò)

LocalDate l = LocalDate.parse("2021-11-29", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate localDate1 = LocalDate.parse("20211129", DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(l);
System.out.println(localDate1);

2021-11-29

2021-11-29

  • 為什么localDate1輸出后格式為yyyy-MM-dd?
  • 雖然入?yún)⒏袷綖閥yyyMMdd,但是轉(zhuǎn)換為LocalDate后,格式默認(rèn)為yyyy-MM-dd, LocalDate返回的格式默認(rèn)為yyyy-MM-dd,下面會(huì)講如何轉(zhuǎn)換為其他格式。

錯(cuò)誤示例:

//錯(cuò)誤示例:text與formatter格式不一致,會(huì)拋出異常
LocalDate l = LocalDate.parse("2021-11-29", DateTimeFormatter.ofPattern("yyyyMMdd"));
LocalDate localDate1 = LocalDate.parse("20211129", DateTimeFormatter.ofPattern("yyyy-MM-dd"));

二:LocalDate日期比較

方法說明
boolean isBefore(ChronoLocalDate other)檢查日期是否在指定日期之前
boolean isAfter(ChronoLocalDate other)檢查日期是否在指定日期之后
boolean isEqual(ChronoLocalDate other)比較日期是否相同
int compareTo(ChronoLocalDate other)日期比較localDateA.compareTo(localDateB),若相等返回0;若A>B,返回1 ;若A<B返回-1

1、boolean isBefore(ChronoLocalDate other)

用于檢查此LocalDate值是否在給定的ChronoLocalDate(other)之前

LocalDate l = LocalDate.parse("2021-11-29");
System.out.println(l.isBefore(LocalDate.parse("2021-11-28"))); //false
System.out.println(l.isBefore(LocalDate.parse("2021-11-30"))); //true

2、boolean isAfter(ChronoLocalDate other)

用于檢查此LocalDate值是否在給定的ChronoLocalDate(other)之后

LocalDate l = LocalDate.parse("2021-11-29");
System.out.println(l.isAfter(LocalDate.parse("2021-11-28"))); //true
System.out.println(l.isAfter(LocalDate.parse("2021-11-30"))); //false

3、boolean isEqual(ChronoLocalDate other)

用于檢查此LocalDate值是否與給定的ChronoLocalDate(other)相等

LocalDate l = LocalDate.parse("2021-11-29");
System.out.println(l.isEqual(LocalDate.parse("2021-11-28"))); //false
System.out.println(l.isEqual(LocalDate.parse("2021-11-30"))); //false
System.out.println(l.isEqual(l)); //true

4、int compareTo(ChronoLocalDate other)

比較兩個(gè)日期A.compareTo(B),若日期相同則返回0;

  • 若A>B,則返回1;
  • 若A<B,則返回-1;
LocalDate l = LocalDate.parse("2021-11-29");
System.out.println(l.compareTo(LocalDate.parse("2021-11-28"))); //1
System.out.println(l.compareTo(LocalDate.parse("2021-11-30"))); //-1
System.out.println(l.compareTo(l)); //0

三:獲取年、月、日

方法說明
int getYear()獲取年份
Month getMonth()使用月枚舉類型獲取月份
int getMonthValue()返回?cái)?shù)字月份 1-12月
int getDayOfMonth()獲取日期在該月是第幾天
DayOfWeek getDayOfWeek()獲取日期是星期幾
int getDayOfYear()獲取日期在該年是第幾天
boolean isLeapYear()檢查是否閏年
int lengthOfMonth()返回日期所在月份共有幾天
int lengthOfYear()返回日期所在年份共有幾天
long toEpochDay()返回當(dāng)前日期距離1970年1月1日的天數(shù)
LocalDate localDate = LocalDate.now();
System.out.println(localDate); // 2021-11-29

System.out.println("年 : " + localDate.getYear()); // 2021
System.out.println("月(英文) : " + localDate.getMonth()); // NOVEMBER
System.out.println("月(數(shù)字英文): " + localDate.getMonth().getValue()); // 11
System.out.println("月(數(shù)字英文): " + localDate.getMonthValue()); // 11
System.out.println("本月第幾天 : " + localDate.getDayOfMonth()); // 29
System.out.println("星期幾(英文) : " + localDate.getDayOfWeek()); // MONDAY
System.out.println("星期幾(數(shù)字英文) : " + localDate.getDayOfWeek().getValue()); // 1
System.out.println("本年的第幾天 : " + localDate.getDayOfYear()); // 333
System.out.println("是否潤年 : " + localDate.isLeapYear()); // false
System.out.println("本月天數(shù) : " + localDate.lengthOfMonth()); // 30
System.out.println("本年天數(shù) : " + localDate.lengthOfYear()); // 365

四:日期計(jì)算,加/減年、月、周、日

4.1、加/減年、月、周、日

方法說明
LocalDate plus(long amountToAdd, TemporalUnit unit)通用方法,可以通過unit參數(shù)控制增加天、周、月、年
LocalDate plusDays(long daysToAdd)返回增加了*天的LocalDate副本
LocalDate plusWeeks(long weeksToAdd)返回增加了*周的LocalDate副本
LocalDate plusMonths(long monthsToAdd)返回增加了*月的LocalDate副本
LocalDate plusYears(long yearsToAdd)返回增加了*年的LocalDate副本
LocalDate minus(long amountToAdd, TemporalUnit unit)通用方法,可以通過unit參數(shù)控制減少天、周、月、年
LocalDate minusDays(long daysToSubtract)返回減少了*天的LocalDate副本
LocalDate minusWeeks(long weeksToSubtract)返回減少了*周的LocalDate副本
LocalDate minusMonths(long monthsToSubtract)返回減少了*月的LocalDate副本
LocalDate minusYears(long yearsToSubtract)返回減少了*年的LocalDate副本
LocalDate localDate1 = LocalDate.now();
localDate1 = LocalDate.parse("2021-11-29");
System.out.println(localDate1); // 2021-11-29

//通用方法
System.out.println("增加 : " + localDate1.plus(1, ChronoUnit.DAYS));

System.out.println("增加天數(shù) : " + localDate1.plusDays(1)); // 2021-11-30
System.out.println("增加周數(shù) : " + localDate1.plusWeeks(1)); // 2021-12-06
System.out.println("增加月數(shù) : " + localDate1.plusMonths(1)); // 2021-12-29
System.out.println("增加年數(shù) : " + localDate1.plusYears(1)); // 2022-11-29

//通用方法
System.out.println("減少 : " + localDate1.minus(1, ChronoUnit.DAYS));

System.out.println("減少天數(shù) : " + localDate1.minusDays(1)); // 2021-11-28
System.out.println("減少月數(shù) : " + localDate1.minusMonths(1)); // 2021-10-29
System.out.println("減少周數(shù) : " + localDate1.minusWeeks(1)); // 2021-11-22
System.out.println("減少年數(shù) : " + localDate1.minusYears(1)); // 2020-11-29

以上方法返回的都是LocalDate實(shí)例的副本,即源對(duì)象localDate1變量的值不變

4.2、計(jì)算兩個(gè)日期的間隔

方法一:計(jì)算兩個(gè)日期相差的天數(shù)

  • 調(diào)用LocalDate類的toEpochDay方法,返回距離1970年1月1日的long值
  • 此方法只能計(jì)算兩個(gè)日期相差的天數(shù),不能計(jì)算月數(shù),年數(shù)
LocalDate start = LocalDate.of(2020,2,28);
LocalDate end = LocalDate.of(2021,12,3);

System.out.println("兩個(gè)時(shí)間之間的相差的天數(shù): "+(end.toEpochDay()-start.toEpochDay())); //644

方法二::計(jì)算兩個(gè)日期相差的天數(shù)、月數(shù)、年數(shù)

ChronoUnit也可以計(jì)算兩個(gè)單元之間的天數(shù)、月數(shù)或年數(shù)。

我們使用ChronoUnit類的between() 方法來執(zhí)行相同的操作:

LocalDate start = LocalDate.of(2020,2,28);
LocalDate end = LocalDate.of(2021,12,3);
long days= ChronoUnit.DAYS.between(start , end );
結(jié)果:644
long month= ChronoUnit.MONTHS.between(start , end );
結(jié)果21
long year= ChronoUnit.YEARS.between(start , end );
結(jié)果 1

方法三: 計(jì)算兩個(gè)日期相差的年月日

此方法主要是計(jì)算兩個(gè)日期相差的年月日,不能計(jì)算出具體相差了多少天

LocalDate start = LocalDate.of(2020,2,28);
LocalDate end = LocalDate.of(2021,12,3);
Period period = Period.between(start,end);
System.out.println("兩個(gè)時(shí)間之間的差值  年:"+period.getYears()+",月:"+period.getMonths()+",日:"+period.getDays());
兩個(gè)時(shí)間之間的差值  年:1,月:9,日:5

五:日期格式化

方法說明
String format(DateTimeFormatter formatter)使用特定格式化形式將LocalDate轉(zhuǎn)為字符串
static LocalDate parse(CharSequence text)從文本字符串獲取LocalDate實(shí)例,text必須是yyyy-MM-dd格式
static LocalDate parse(CharSequence text, DateTimeFormatter formatter)使用特定格式化形式從文本字符串獲取LocalDate實(shí)例,text的格式必須與formatter格式一致,如text為yyyyMMdd格式,則formatter也應(yīng)該為yyyyMMdd格式,否則會(huì)報(bào)錯(cuò)
LocalDate l = LocalDate.parse("2021-01-29");
System.out.println(l); //2021-01-29

LocalDate l1 = LocalDate.parse("2021-11-29", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(l1); //2021-11-29

LocalDate localDate1 = LocalDate.parse("20211129", DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(localDate1); //2021-11-29

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
System.out.println(l.format(dtf));// 2021-01-29 十位轉(zhuǎn)八位 ==> 20210129

dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
System.out.println(l.format(dtf));// 2021-01-29  ==> 2021年01月29日

dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
System.out.println(l.format(dtf));// 2021-01-29  ==> 2021/01/29

六:LocalDate進(jìn)階,獲取月末、月首、本周一、下周五、每個(gè)月的周一

方法說明
LocalDate with(TemporalAdjuster adjuster)使用傳遞的TemporalAdjuster作為參數(shù)來調(diào)整此日期時(shí)間,并在調(diào)整后返回調(diào)整后的日期時(shí)間的副本
LocalDate with(TemporalField field, long newValue)用于將LocalDate的指定字段設(shè)置為新值并返回新的日期時(shí)間的副本。此方法可用于更改任何受支持的字段,例如年,月或day-of-month。如果由于不支持該字段或其他原因而無法設(shè)置新值,則會(huì)引發(fā)異常。
LocalDate withMonth(int month)修改LocalDate變量的月份,如LocalDate.parse(“2021-10-30”).withMonth(3)則為2021-03-30
month:從1到12
LocalDate withDayOfMonth(int dayOfMonth)修改LocalDate變量的日,如LocalDate.parse(“2021-10-30”).withDayOfMonth(3)則為2021-10-03 dayOfMonth:從1到28-31
LocalDate withDayOfYear(int dayOfYear)返回當(dāng)年第幾天的日期,如當(dāng)年第300天是幾月幾號(hào),dayOfYear從1到365-366
LocalDate withYear(int year)修改LocalDate變量的年份,如LocalDate.parse(“2021-10-30”).withYear(2000)則為2000-10-30 year:從MIN_YEAR到MAX_YEAR

1、LocalDate with(TemporalAdjuster adjuster)

  • 該方法用于使用傳遞的TemporalAdjuster作為參數(shù)來調(diào)整此日期時(shí)間,并在調(diào)整后返回調(diào)整后的日期時(shí)間的副本。
  • 使用指定的調(diào)整器策略對(duì)象進(jìn)行調(diào)整。
  • 該LocalDate實(shí)例是不可變的,不受此方法調(diào)用的影響。

參數(shù):該方法接受調(diào)節(jié)器作為要使用的調(diào)節(jié)器的參數(shù)。

返回值:該方法將基于此方法返回LocalDate并進(jìn)行調(diào)整。

異常:此方法引發(fā)以下異常:

  • DateTimeException–如果無法進(jìn)行調(diào)整。
  • ArithmeticException–如果發(fā)生數(shù)字溢出。

TemporalAdjuster:時(shí)間調(diào)節(jié)器

有的時(shí)候,你需要進(jìn)行一些更加靈活復(fù)雜的操作,比如,將日期調(diào)整到下個(gè)周日、下個(gè)工作日,或者是本月的最后一天。

這時(shí),就需要時(shí)間調(diào)節(jié)器 TemporalAdjuster,可以更加靈活地處理日期。

TemporalAdjusters 工具提供了一些通用的功能,并且你還可以新增你自己的功能。

方法說明
static TemporalAdjuster firstDayOfMonth()當(dāng)前月的第一天
static TemporalAdjuster firstDayOfNextMonth()下一個(gè)月的第一天
static TemporalAdjuster firstDayOfNextYear()下一年的第一天
static TemporalAdjuster firstDayOfYear()當(dāng)年的第一天
static TemporalAdjuster lastDayOfYear()當(dāng)年的最后一天
static TemporalAdjuster lastDayOfMonth()當(dāng)月的最后一天
static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)某月的第一個(gè)星期幾
static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)某月的最后一個(gè)星期幾
static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)某月的第幾個(gè)星期幾,例如,三月中第二個(gè)星期二
static TemporalAdjuster next(DayOfWeek dayOfWeek)(往后不包括當(dāng)天)下一個(gè)星期幾是幾月幾號(hào)。若當(dāng)前為周三,那么next(DayOfWeek.WEDNESDAY)指下一個(gè)周三即下周三;next(DayOfWeek.SUNDAY) 指下一個(gè)周日即本周日(此時(shí)并不是下周日)
static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)(往后包括當(dāng)天)最近星期幾的日期。如最近星期五的日期,如果今天是星期五,則返回今天日期,如果今天不是星期五,則返回下周五的日期
static TemporalAdjuster previous(DayOfWeek dayOfWeek)(往前不包括當(dāng)天)上一個(gè)星期幾是幾月幾號(hào)。若當(dāng)前為周三,那么previous(DayOfWeek.WEDNESDAY)指上一個(gè)周三即上周三;previous(DayOfWeek.TUESDAY) 指上一個(gè)周二即昨天(此時(shí)并不是上周二)
static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)(往前包括當(dāng)天)最近星期幾的日期。如最近星期五的日期,如果今天是星期五,則返回今天日期,如果今天不是星期五,則返回上周五的日期
LocalDate now = LocalDate.now();
System.out.println("當(dāng)前時(shí)間:"+now); //2021-11-30

//獲取當(dāng)月第一天
System.out.println("當(dāng)月第一天:"+now.with(TemporalAdjusters.firstDayOfMonth()));// 2021-11-01
//獲取本月第2天:
System.out.println("本月第2天:"+now.withDayOfMonth(2)); //2021-11-02
//獲取下月第一天
System.out.println("下月第一天:"+now.with(TemporalAdjusters.firstDayOfNextMonth())); //2021-12-01
//獲取明年第一天
System.out.println("明年第一天:"+now.with(TemporalAdjusters.firstDayOfNextYear())); //2022-01-01
//獲取本年第一天
System.out.println("本年第一天:"+now.with(TemporalAdjusters.firstDayOfYear()));//2021-01-01
//獲取當(dāng)月最后一天,再也不用計(jì)算是28,29,30還是31:
System.out.println("當(dāng)月最后一天:"+now.with(TemporalAdjusters.lastDayOfMonth())); //2021-11-30
//獲取本年最后一天
System.out.println("本年最后一天:"+now.with(TemporalAdjusters.lastDayOfYear())); //2021-12-31
//獲取當(dāng)月的第一個(gè)星期一
System.out.println("當(dāng)月的第一個(gè)星期一:"+now.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY))); //2021-11-01
//獲取當(dāng)月的最后一個(gè)星期一
System.out.println("當(dāng)月的最后一個(gè)星期一:"+now.with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY))); //2021-11-29

//獲取當(dāng)月第三周星期五
System.out.println("當(dāng)月第三周星期五:"+now.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.FRIDAY))); //2021-11-19
//獲取本周一
System.out.println("本周一:"+now.with(DayOfWeek.MONDAY)); //2021-11-29
//獲取上周二
System.out.println("上周二:"+now.minusWeeks(1).with(ChronoField.DAY_OF_WEEK, 2)); //2021-11-23
//(往前不包括當(dāng)天)獲取當(dāng)前日期的上一個(gè)周一  如果今天是周一,則返回上周一
System.out.println("上一個(gè)周一(不包括當(dāng)天):"+now.with(TemporalAdjusters.previous(DayOfWeek.MONDAY))); //2021-11-29
//(往前包括當(dāng)天)最近星期五的日期  如果今天是星期五,則返回今天日期
System.out.println("上一個(gè)周一(包括當(dāng)天):"+now.with(TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY))); //2021-11-26
//獲取下周二
System.out.println("下周二:"+now.plusWeeks(1).with(ChronoField.DAY_OF_WEEK, 2)); //2021-12-07
//(往后不包括當(dāng)天)獲取當(dāng)前日期的下一個(gè)周日 如果今天是周日,則返回下周日的時(shí)間  如果今天是星期一,則返回本周日的時(shí)間
System.out.println("下一個(gè)周日(不包括當(dāng)天):"+now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY))); //2021-12-05
//(往后包括當(dāng)天)最近星期五的日期  如果今天是星期五,則返回今天日期
System.out.println("下一個(gè)周日(包括當(dāng)天):"+now.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY))); //2021-12-03

七:LocalDateTime與Date的互轉(zhuǎn)

/**
  * Date轉(zhuǎn)LocalDateTime
  * @param date Date
  * @return LocalDateTime
  */
 public static LocalDateTime dateToLocalDateTime(Date date) {
     Instant instant = date.toInstant();
     ZoneId zoneId = ZoneId.systemDefault();
     return instant.atZone(zoneId).toLocalDateTime();
 }

 /**
  * LocalDateTime轉(zhuǎn)Date
  * @param localDateTime LocalDateTime
  * @return Date
  */
 public static Date localDateTimeToDate(LocalDateTime localDateTime) {
     ZoneId zoneId = ZoneId.systemDefault();
     ZonedDateTime zdt = localDateTime.atZone(zoneId);
     return Date.from(zdt.toInstant());
 }

參考:

LocalDate官方apihttps://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java自定義驗(yàn)證器的實(shí)現(xiàn)示例

    java自定義驗(yàn)證器的實(shí)現(xiàn)示例

    在對(duì)外暴露接口中,我們通常會(huì)對(duì)入?yún)⑦M(jìn)行驗(yàn)證,比如一些字符串非空判斷等,本文主要介紹了java自定義驗(yàn)證器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • RabbitMQ?Stream插件使用案例代碼

    RabbitMQ?Stream插件使用案例代碼

    這篇文章主要介紹了RabbitMQ?Stream插件使用案例代碼,2.4版為RabbitMQ流插件引入了對(duì)RabbitMQStream插件Java客戶端的初始支持,需要的朋友可以參考下
    2024-04-04
  • Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換方法實(shí)例

    Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換方法實(shí)例

    為什么需要將javaBean和map進(jìn)行轉(zhuǎn)換,在很多應(yīng)用場(chǎng)景中,需要將key=value形式的數(shù)據(jù)與javaBean對(duì)象相互轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • spring初始化源碼代碼淺析

    spring初始化源碼代碼淺析

    Spring框架被廣泛應(yīng)用于我們的日常工作中,但是很長時(shí)間以來我們都是只會(huì)使用,不懂它的作用原理,下面這篇文章主要給大家介紹了關(guān)于spring初始化源碼的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • java設(shè)計(jì)優(yōu)化之單例模式

    java設(shè)計(jì)優(yōu)化之單例模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)優(yōu)化中的單例模式,深入學(xué)習(xí)java單例模式,感興趣的朋友可以參考一下
    2016-03-03
  • 解析SpringSecurity+JWT認(rèn)證流程實(shí)現(xiàn)

    解析SpringSecurity+JWT認(rèn)證流程實(shí)現(xiàn)

    這篇文章主要介紹了解析SpringSecurity+JWT認(rèn)證流程實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Springboot內(nèi)置的工具類之CollectionUtils示例講解

    Springboot內(nèi)置的工具類之CollectionUtils示例講解

    這篇文章主要介紹了Springboot內(nèi)置的工具類之CollectionUtils,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • AQS(AbstractQueuedSynchronizer)抽象隊(duì)列同步器及工作原理解析

    AQS(AbstractQueuedSynchronizer)抽象隊(duì)列同步器及工作原理解析

    AQS是用來構(gòu)建鎖或者其他同步器組件的重量級(jí)基礎(chǔ)框架及整個(gè)JUC體系的基石,通過內(nèi)置的FIFO對(duì)列來完成資源獲取線程的排隊(duì)工作,并通過一個(gè)int類型變量表示持有鎖的狀態(tài),本文給大家詳細(xì)介紹下AQS抽象隊(duì)列同步器的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-03-03
  • IDEA中的.iml文件和.idea文件夾使用方式

    IDEA中的.iml文件和.idea文件夾使用方式

    這篇文章主要介紹了IDEA中的.iml文件和.idea文件夾使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java中的MessageDigest類加密詳解

    Java中的MessageDigest類加密詳解

    這篇文章主要介紹了Java中的MessageDigest類加密詳解,MessageDigest?類是一個(gè)引擎類,它是為了提供諸如?SHA1?或?MD5?等密碼上安全的報(bào)文摘要功能而設(shè)計(jì)的,需要的朋友可以參考下
    2024-01-01

最新評(píng)論