【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP
緣起
前面有個需求,獲取當前月和前5個月的最后一天,網(wǎng)上找了一下基本都是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個月,對應(yīng)的還有獲取前N天前N年等方法。下面列出一份完整的API
LocalDateAPI
獲取LocalDate
1.獲取當前的日期 LocalDate
LocalDate now = LocalDate.now();
2.根據(jù)年月日的值獲取 LocalDate
LocalDate.of(2016, 11, 30);
3.根據(jù)某年的第n天獲取 LocalDate
LocalDate.ofYearDay(2016, 300)
4.從時間紀元(1970年1月1日)開始第n天(負數(shù)表示在時間紀元前n天)獲取 LocalDate
LocalDate.ofEpochDay(365);
操作LocalDate
LocalDate.now().getYear(); // 年份
LocalDate.now().getMonthValue(); // 月份(數(shù)值表示, 從1開始)
LocalDate.now().getMonth(); // 月份(英文[enum]表示)
LocalDate.now().getDayOfMonth(); // 日期(從1開始)
LocalDate.now().getDayOfYear(): // 當天所在這一年的第幾天(從1開始)
LocalDate.now().getDayOfWeek(); // 星期幾
LocalDate.now().lengthOfYear(); // 當年的天數(shù)
LocalDate.now().lengthOfMonth(); //當月的天數(shù)
LocalDate.now().toEpochDay(); // 與時間紀元(1970年1月1日)相差的天數(shù),負數(shù)表示在時間紀元之前多少天
LocalDate運算
可以對年、月、日、周進行加減法運算:
如果加(或減)日期超過當月的最大天數(shù)(或小于等于0)則月份對應(yīng)增加(或減少);
如果加(或減)月份超過12(或小于等于0)則年份對應(yīng)增加(或減少);
加減周數(shù)其實是對日期(天數(shù))的加減;
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.替換
所有的數(shù)值必須合法;
如果當月當天是閏年2月29日,替換年份為非閏年,則會變成2月28日;
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轉(zhuǎn)換
可以把LocalDate轉(zhuǎn)換自己想要的格式
localDate.format(DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”));
TemporalAdjusters
這個類可以獲取第一天第一年最后一天最后一年等信息
總結(jié)
以上是生活随笔為你收集整理的【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue引入组件时‘@/xxxx’的意思
- 下一篇: Mybatis解决实体类属性和表字段对应