package com.wanmi.sbc.util; import org.omg.Messaging.SYNC_WITH_TRANSPORT; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; /** * jdk8 獲取當天,本週,本月,本季度,本年起始時間工具類 */ public class DateUtils { public static final int CURRENT = 0; public static final int NEXT = 1; public static final int PREVIOUS = -1; public static final int QUARTER =3; /** * 獲取某天的開始日期 * * @param offset 0今天,1明天,-1昨天,依次類推 * @return */ public static LocalDateTime dayStart(int offset) { return LocalDateTime.of(LocalDate.now().plusDays(offset), LocalTime.MIN); } /** * 獲取某周的開始日期 * * @param offset 0本週,1下週,-1上週,依次類推 * @return */ public static LocalDateTime weekStart(int offset) { return LocalDateTime.now().plusWeeks(offset).with(DayOfWeek.MONDAY).minusDays(NEXT); } /** * 獲取某月的開始日期 * * @param offset 0本月,1下個月,-1上個月,依次類推 * @return */ public static LocalDateTime monthStart(int offset) { return LocalDateTime.now().plusMonths(offset).with(TemporalAdjusters.firstDayOfMonth()).minusDays(NEXT); } /** * 獲取某季度的開始日期 * 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月 * * @param offset 0本季度,1下個季度,-1上個季度,依次類推 * @return */ public static LocalDateTime quarterStart(int offset) { final LocalDateTime date = LocalDateTime.now().plusMonths(offset * 3); int month = date.getMonth().getValue();//當月 int start = 0; if (month >= 2 && month <= 4) {//第一季度 start = 2; } else if (month >= 5 && month <= 7) {//第二季度 start = 5; } else if (month >= 8 && month <= 10) {//第三季度 start = 8; } else if ((month >= 11 && month <= 12)) {//第四季度 start = 11; } else if (month == 1) {//第四季度 start = 11; month = 13; } return date.plusMonths(start - month).with(TemporalAdjusters.firstDayOfMonth()).minusDays(NEXT); } /** * 獲取某年的開始日期 * * @param offset 0今年,1明年,-1去年,依次類推 * @return */ public static LocalDateTime yearStart(int offset) { return LocalDateTime.now().plusYears(offset).with(TemporalAdjusters.firstDayOfYear()); } public static void main(String[] args) { System.out.println("當天開始時間>>>"+dayStart(CURRENT)); System.out.println("當天結束時間>>>"+dayStart(NEXT)); System.out.println("本週開始時間>>>"+weekStart(CURRENT)); System.out.println("本週結束時間>>>"+weekStart(NEXT)); System.out.println("本月開始時間>>>"+monthStart(CURRENT)); System.out.println("本月結束時間>>>"+monthStart(NEXT)); System.out.println("本年開始時間>>>"+yearStart(CURRENT)); System.out.println("本年結束時間>>>"+yearStart(NEXT)); System.out.println("本季度開始時間>>>"+quarterStart(CURRENT)); System.out.println("本季度結束時間>>>"+quarterStart(NEXT)); } }
jdk8 獲取當天,本週,本月,本季度,本年起始時間工具類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.