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

java8之LocalDate的使用、LocalDate格式化問(wèn)題

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

前言

Java 8里面添加了許多的新特性,其中一個(gè)最常見(jiàn)也是最實(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

方法說(shuō)明
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)換為L(zhǎng)ocalDate,字符串的格式必須為yyyy-MM-dd 10位長(zhǎng)度的日期格式,否則會(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”)來(lái)實(shí)例化:

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

傳給of()方法的參數(shù)是時(shí)區(qū)的ID,如“UTC+1”指距離UTC(格林威治時(shí)間)有一小時(shí)的時(shí)差,你可以使用你想要的時(shí)差來(lái)表示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)換為L(zhǎng)ocalDate,字符串的格式必須為yyyy-MM-dd 10位長(zhǎng)度的日期格式,否則會(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月沒(méi)有30號(hào)
LocalDate l = LocalDate.parse("2021-02-30");

若parse(CharSequence text)中傳入的格式非yyyy-MM-dd或不合法,會(huì)拋出異常,且長(zhǎng)度需要是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)換為L(zhǎng)ocalDate后,格式默認(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日期比較

方法說(shuō)明
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

三:獲取年、月、日

方法說(shuō)明
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("是否潤(rùn)年 : " + localDate.isLeapYear()); // false
System.out.println("本月天數(shù) : " + localDate.lengthOfMonth()); // 30
System.out.println("本年天數(shù) : " + localDate.lengthOfYear()); // 365

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

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

方法說(shuō)明
LocalDate plus(long amountToAdd, TemporalUnit unit)通用方法,可以通過(guò)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)通用方法,可以通過(guò)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() 方法來(lái)執(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

五:日期格式化

方法說(shuō)明
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è)月的周一

方法說(shuō)明
LocalDate with(TemporalAdjuster adjuster)使用傳遞的TemporalAdjuster作為參數(shù)來(lái)調(diào)整此日期時(shí)間,并在調(diào)整后返回調(diào)整后的日期時(shí)間的副本
LocalDate with(TemporalField field, long newValue)用于將LocalDate的指定字段設(shè)置為新值并返回新的日期時(shí)間的副本。此方法可用于更改任何受支持的字段,例如年,月或day-of-month。如果由于不支持該字段或其他原因而無(wú)法設(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ù)來(lái)調(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–如果無(wú)法進(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 工具提供了一些通用的功能,并且你還可以新增你自己的功能。

方法說(shuō)明
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)文章

  • SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)url攔截(基于rbac模型)

    SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)url攔截(基于rbac模型)

    本文主要介紹了SpringSecurity動(dòng)態(tài)url攔截,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法

    使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法

    這篇將介紹使用Post方式提交數(shù)據(jù)到服務(wù)器,由于Post的方式和Get方式創(chuàng)建Web工程是一模一樣的,只用幾個(gè)地方的代碼不同,這篇文章主要介紹了使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • 淺談SpringMVC請(qǐng)求映射handler源碼解讀

    淺談SpringMVC請(qǐng)求映射handler源碼解讀

    這篇文章主要介紹了淺談SpringMVC請(qǐng)求映射handler源碼解讀,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能

    springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能

    這篇文章主要介紹了springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java常用內(nèi)置注解用法分析

    Java常用內(nèi)置注解用法分析

    這篇文章主要介紹了Java常用內(nèi)置注解用法,結(jié)合實(shí)例形式分析了java使用@SuppressWarnings關(guān)閉警告信息以及@Depreca標(biāo)注的元素不使用兩種注解使用方法,需要的朋友可以參考下
    2019-08-08
  • Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn)

    Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn)

    比較器是一種可以對(duì)集合或數(shù)組中的元素按照自定義的方式進(jìn)行排序的對(duì)象,本文主要介紹了Java中TreeSet、HashSet、Collection重寫比較器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • Java線程中斷及線程中斷的幾種使用場(chǎng)景小結(jié)

    Java線程中斷及線程中斷的幾種使用場(chǎng)景小結(jié)

    在并發(fā)編程中,合理使用線程中斷機(jī)制可以提高程序的魯棒性和可維護(hù)性,本文主要介紹了Java線程中斷及線程中斷的幾種使用場(chǎng)景小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 基于SpringBoot整合oauth2實(shí)現(xiàn)token認(rèn)證

    基于SpringBoot整合oauth2實(shí)現(xiàn)token認(rèn)證

    這篇文章主要介紹了基于SpringBoot整合oauth2實(shí)現(xiàn)token 認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot分布式文件存儲(chǔ)數(shù)據(jù)庫(kù)mongod

    SpringBoot分布式文件存儲(chǔ)數(shù)據(jù)庫(kù)mongod

    MongoDB是一個(gè)基于分布式文件存儲(chǔ)的NoSQL數(shù)據(jù)庫(kù),由C++語(yǔ)言編寫,旨在為Web應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)中功能最豐富最像關(guān)系數(shù)據(jù)庫(kù)的
    2023-02-02
  • Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常

    Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常

    這篇文章主要介紹了Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常,@ControllerAdvice ,@ControllerAdvice是一個(gè)非常有用的注解,顧名思義,這是一個(gè)增強(qiáng)的 Controller,一般配合@ExceptionHandler使用來(lái)處理全局異常,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

咸宁市| 阜阳市| 南丹县| 新建县| 长武县| 新宾| 琼中| 密山市| 历史| 沈阳市| 囊谦县| 太仆寺旗| 恩施市| 镶黄旗| 吴堡县| 从江县| 三亚市| 金坛市| 凯里市| 嵊州市| 天水市| 白河县| 齐齐哈尔市| 紫金县| 刚察县| 郎溪县| 定西市| 广宗县| 彭泽县| 石景山区| 阿瓦提县| 兴安县| 资源县| 醴陵市| 陕西省| 体育| 永年县| 仪征市| 敖汉旗| 永宁县| 精河县|