日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緣起

前面有個需求,獲取當前月和前5個月的最后一天,網上找了一下基本都是jdk7以前的,但實際上jdk8中有更簡單的獲取方式。

public static void main(String[] args) {for (int i = 0;i<6;i++){LocalDate today = LocalDate.now().minusMonths(i);//本月的第一天LocalDate firstday = LocalDate.of(today.getYear(),today.getMonth(),1);//本月的最后一天LocalDate lastDay =today.with(TemporalAdjusters.lastDayOfMonth());System.out.println(firstday.getMonth().getValue()+"月");System.out.println("最后一天:"+lastDay.getDayOfMonth());System.out.println("-------------------");} }

輸出

2月
最后一天:28

1月
最后一天:31

12月
最后一天:31

11月
最后一天:30

10月
最后一天:31

9月
最后一天:30

其中minusMonths(n)為獲取當前時間的前N個月,對應的還有獲取前N天前N年等方法。下面列出一份完整的API

LocalDateAPI

獲取LocalDate

1.獲取當前的日期 LocalDate

LocalDate now = LocalDate.now();

2.根據年月日的值獲取 LocalDate

LocalDate.of(2016, 11, 30);

3.根據某年的第n天獲取 LocalDate

LocalDate.ofYearDay(2016, 300)

4.從時間紀元(1970年1月1日)開始第n天(負數表示在時間紀元前n天)獲取 LocalDate

LocalDate.ofEpochDay(365);

操作LocalDate

LocalDate.now().getYear(); // 年份
LocalDate.now().getMonthValue(); // 月份(數值表示, 從1開始)
LocalDate.now().getMonth(); // 月份(英文[enum]表示)
LocalDate.now().getDayOfMonth(); // 日期(從1開始)
LocalDate.now().getDayOfYear(): // 當天所在這一年的第幾天(從1開始)
LocalDate.now().getDayOfWeek(); // 星期幾
LocalDate.now().lengthOfYear(); // 當年的天數
LocalDate.now().lengthOfMonth(); //當月的天數
LocalDate.now().toEpochDay(); // 與時間紀元(1970年1月1日)相差的天數,負數表示在時間紀元之前多少天

LocalDate運算

可以對年、月、日、周進行加減法運算:
如果加(或減)日期超過當月的最大天數(或小于等于0)則月份對應增加(或減少);
如果加(或減)月份超過12(或小于等于0)則年份對應增加(或減少);
加減周數其實是對日期(天數)的加減;

1.加法

System.out.println(“加法運算”);
System.out.println(“當前:” + LocalDate.now());
System.out.println(“加1天:” + LocalDate.now().plusDays(1));
System.out.println(“加1周:” + LocalDate.now().plusWeeks(1));
System.out.println(“加1月:” + LocalDate.now().plusMonths(1));
System.out.println(“加1年:” + LocalDate.now().plusYears(1));

2.減法

System.out.println(“減法運算”);
System.out.println(“當前:” + LocalDate.now());
System.out.println(“減1天:” + LocalDate.now().minusDays(1));
System.out.println(“減1周:” + LocalDate.now().minusWeeks(1));
System.out.println(“減1月:” + LocalDate.now().minusMonths(1));
System.out.println(“減1年:” + LocalDate.now().minusYears(1));

3.替換

所有的數值必須合法;
如果當月當天是閏年2月29日,替換年份為非閏年,則會變成2月28日;

System.out.println("當前:" + LocalDate.now()); System.out.println("替換日期為1:" + LocalDate.now().withDayOfMonth(1)); System.out.println("替換天數為1:" + LocalDate.now().withDayOfYear(1)); System.out.println("替換月份為1:" + LocalDate.now().withMonth(1)); System.out.println("替換年份為1:" + LocalDate.now().withYear(1));

LocalDate判斷

可以對兩個 LocalDate 進行比較,可以判斷一個日期是否在另一個日期之前或之后,或者判斷兩個日期是否是同年同月同日。

System.out.println(“當天:” + LocalDate.now());
System.out.println(“是否在當天之前:” + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));
System.out.println(“是否在當天之后:” + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));
System.out.println(“是否在當天:” + LocalDate.now().isEqual(LocalDate.now()));
System.out.println(“今年是否是閏年:” + LocalDate.now().isLeapYear());

LocalDate轉換

可以把LocalDate轉換自己想要的格式

localDate.format(DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”));

TemporalAdjusters

這個類可以獲取第一天第一年最后一天最后一年等信息

總結

以上是生活随笔為你收集整理的【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。