package com.niu.afsale.common.utils;
import com.niu.afsale.common.AfsaleConstants;
import org.slf4j.Logger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @FileName: DateUtil
* @Description: 日期工具类
* @author: <a href="mailto: muyuanpei@camelotchina.com">myp</a>
* @create: 2020-07-28 10:02
* @Copyright: (c) 2018年 北京柯莱特科技有限公司
*/
public class DateUtil {
private static Logger log = Log.get(DateUtil.class);
// 获取前一天日期
public static Date getTimeDay(Date date) {
Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
ca.setTime(date); //设置时间为当前时间
ca.add(Calendar.DATE, -1); //日期减1
Date lastDay = ca.getTime(); //结果
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String nowStr = new SimpleDateFormat("yyyy-MM-dd").format(lastDay);
Date dateResult = sdf.parse(nowStr);
return dateResult;
} catch (Exception e) {
log.error("方法:[{}],错误描述:[{}]", "DateUtil-getTimeDay", "获取日期的前一天错误!!!");
}
return null;
}
// 获取当前月的第一天
public static Date getCurrentMonthFirstDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 0);
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String currentMonthFirstDayStr = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
Date currentMonthFirstDay = sdf.parse(currentMonthFirstDayStr);
return currentMonthFirstDay;
} catch (Exception e) {
log.error("方法:[{}],错误描述:[{}]", "DateUtil-getCurrentMonthFirstDay", "获取当前月的第一天错误!!!");
}
return null;
}
//获取当前日期上个月的第一天
public static Date preMonthFirstDate() {
Calendar cal_1 = Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH, 1);
Date preMonthFirstDate = cal_1.getTime();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String preMonthFirstDateStr = new SimpleDateFormat("yyyy-MM-dd").format(preMonthFirstDate);
Date preMonthFirstDateResult = sdf.parse(preMonthFirstDateStr);
return preMonthFirstDateResult;
} catch (Exception e) {
log.error("方法:[{}],错误描述:[{}]", "DateUtil-preMonthFirstDate", "获取当前日期上个月的第一天错误!!!");
}
return null;
}
//获取当前日期上个月的最后一天
public static Date preMonthLastDate() {
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH, 0);
Date preMonthLastDate = cale.getTime();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String preMonthLastDateStr = new SimpleDateFormat("yyyy-MM-dd").format(preMonthLastDate);
Date preMonthLastDateResult = sdf.parse(preMonthLastDateStr);
return preMonthLastDateResult;
} catch (Exception e) {
log.error("方法:[{}],错误描述:[{}]", "DateUtil-preMonthLastDate", "获取当前日期上个月的最后一天错误!!!");
}
return null;
}
// 获取入参日期的下个月的第一天
public static Date firstDayOfNextMonth(Date date) {
//获得入参的日期
Calendar cd = Calendar.getInstance();
cd.setTime(date);
//获取下个月第一天:
cd.add(Calendar.MONTH, 1);
//设置为1号,当前日期既为次月第一天
cd.set(Calendar.DAY_OF_MONTH,1);
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String firstDayOfNextMonthStr = new SimpleDateFormat("yyyy-MM-dd").format(cd.getTime());
Date firstDayOfNextMonthResult = sdf.parse(firstDayOfNextMonthStr);
return firstDayOfNextMonthResult;
} catch (Exception e) {
log.error("方法:[{}],错误描述:[{}]", "DateUtil-preMonthLastDate", "获取入参日期的下个月的第一天错误!!!");
}
return null;
}
public static List<String> getmous(String start, String end) {
List<String> date = new ArrayList<String>();
try {
Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(start);//定义起始日期
Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(end);//定义结束日期
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(d1);//设置日期起始时间
while (dd.getTime().before(d2)) {//判断是否到结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(dd.getTime());
date.add(str);
dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
}
date.add(end);
} catch (Exception e) {
System.out.println("异常" + e.getMessage());
}
return date;
}
// 获取一段时间范围内的每个月1日
public static List<String> getDateSection() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String nowStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
Date date = sdf.parse(nowStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 1);
List<String> getmous = getmous(AfsaleConstants.SETTLEMENT_STATISTICS_START_DATE, sdf.format(calendar.getTime()));
System.out.println(getmous);
return getmous;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Date date = new Date();
Date firstDayOfNextMonth = firstDayOfNextMonth(date);
System.out.println(firstDayOfNextMonth);
}
}
没有满足需求的请参考以下文章:
https://blog.csdn.net/broucetrong/article/details/81452377
2021.12.23更新
private static Logger log = LoggerFactory.getLogger(DateUtils.class);
public static final long DayMills = 24 * 60 * 60 * 1000L;
public static String DATE_PATTERN = "yyyy-MM-dd";
public static String DATE_FORMAT = "yyyy.MM.dd";
public static String TIME_PATTERN = DATE_PATTERN + " HH:mm:ss";
public static final String YMD_PATTERN = "yyyyMMdd";
public static final String YM_PATTERN = "yyyyMM";
public static final String HMS_PATTERN = "HHmmss";
public static final String YMDHMS_PATTERN = YMD_PATTERN + HMS_PATTERN;
public static final String DateBeginPoint = "000000";
public static final String DateEndPoint = "235959";
/**
* 获取当前系统时间
*/
public static Date getCurrentDateSys() {
return Calendar.getInstance().getTime();
}
public static Timestamp getCurrentTimestamp() {
return new Timestamp(Calendar.getInstance().getTime().getTime());
}
public static String formatDate(Date date, String format) {
if (date == null) {
return "";
} else {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
}
public static String formatDate(Date date) {
return formatDate(date, DATE_PATTERN);
}
public static String formatDateTime(Date date) {
return formatDate(date, TIME_PATTERN);
}
/**
* 转换为时间(天,时:分:秒.毫秒)
*
* @param timeMillis
* @return
*/
public static String formatDateTime(long timeMillis) {
long day = timeMillis / (24 * 60 * 60 * 1000);
long hour = (timeMillis / (60 * 60 * 1000) - day * 24);
long min = ((timeMillis / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (timeMillis / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
long sss = (timeMillis - day * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000 - s * 1000);
return (day > 0 ? day + "," : "") + hour + ":" + min + ":" + s + "." + sss;
}
public static Date parseDate(String strDate, String format) {
try {
if (strDate != null && !strDate.equals("")) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.parse(strDate);
} else {
return null;
}
} catch (Exception var3) {
return new Date();
}
}
public static Date parseDateFormat(String strDate, String format) {
try {
if (strDate != null && !strDate.equals("")) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.parse(strDate);
} else {
return new Date(0L);
}
} catch (Exception var3) {
return new Date(0L);
}
}
public static Date parseDate(String strDate) {
return parseDate(strDate, DATE_PATTERN);
}
public static Date parseDateTime(String strDate) {
return parseDate(strDate, TIME_PATTERN);
}
public static Date parseDateFormat(String strDate) {
return parseDateFormat(strDate, DATE_FORMAT);
}
/**
* 计算 second 秒后的时间
*
* @param date
* @param second
*/
public static Date addSecond(Date date, int second) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 计算 minute 分钟后的时间
*
* @param date
* @param minute
*/
public static Date addMinute(Date date, int minute) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minute);
return calendar.getTime();
}
/**
* 计算 hour 小时后的时间
*
* @param date
* @param hour
*/
public static Date addHour(Date date, int hour) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hour);
return calendar.getTime();
}
/**
* 在输入日期上增加(+)或减去(-)天数
*
* @param date 输入日期
* @param iday 要增加或减少的天数
*/
public static Date addDay(Date date, int iday) {
Calendar cd = Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.DAY_OF_MONTH, iday);
return cd.getTime();
}
/**
* 在输入日期上增加(+)或减去(-)月份
*
* @param date 输入日期
* @param imonth 要增加或减少的月分数
*/
public static Date addMonth(Date date, int imonth) {
Calendar cd = Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.MONTH, imonth);
return cd.getTime();
}
public static Date addMonthOfStr(Date date, int imonth, int dayNum) {
// int dayNum = Integer.parseInt(new SimpleDateFormat("yyyy-MM-dd").format(date).toString().split("-")[2]);
int monthNum = Integer.parseInt(new SimpleDateFormat("yyyy-MM-dd").format(date).toString().split("-")[1]);
int yearNum = Integer.parseInt(new SimpleDateFormat("yyyy-MM-dd").format(date).toString().split("-")[0]);
monthNum += imonth;
if (monthNum > 12) {
monthNum -= 12;
yearNum += 1;
}
String newDateStr = String.valueOf(yearNum) + "-" + String.valueOf(monthNum) + "-" + String.valueOf(dayNum);
if (DateUtils.isLegalDate(newDateStr)) {
Date newDate = DateUtils.parseDate(newDateStr, DateUtils.DATE_PATTERN);
return newDate;
} else {
return null;
}
}
/**
* 在输入日期上增加(+)或减去(-)年份
*
* @param date 输入日期
* @param iyear 要增加或减少的年数
*/
public static Date addYear(Date date, int iyear) {
Calendar cd = Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.YEAR, iyear);
return cd.getTime();
}
public static String getTimePattern() {
return TIME_PATTERN;
}
/***
* 计算两个日期的距离天数
*
* @param beginDate
* @param endDate
* @return
*/
private static long calcBetweenDayNum(Date beginDate, Date endDate) {
Calendar beginCalendar = Calendar.getInstance();
beginCalendar.setTime(beginDate);
beginCalendar.set(Calendar.HOUR_OF_DAY, 0);
beginCalendar.set(Calendar.MINUTE, 0);
beginCalendar.set(Calendar.SECOND, 0);
beginCalendar.set(Calendar.MILLISECOND, 0);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(endDate);
endCalendar.set(Calendar.HOUR_OF_DAY, 0);
endCalendar.set(Calendar.MINUTE, 0);
endCalendar.set(Calendar.SECOND, 0);
endCalendar.set(Calendar.MILLISECOND, 0);
long endTimeMillis = endCalendar.getTimeInMillis();
long beginTimeMillis = beginCalendar.getTimeInMillis();
long ce = endTimeMillis - beginTimeMillis;
BigDecimal dayMills = BigDecimal.valueOf(DayMills);
BigDecimal bDecimal = BigDecimal.valueOf(ce).divide(dayMills, RoundingMode.CEILING);
return bDecimal.longValue();
}
public static long clacBetweenTime(Date startDate, Date endDate, int unit) {
long ln = endDate.getTime() - startDate.getTime();
ln = Math.abs(ln);
long ce = 0;
switch (unit) {
case Calendar.MINUTE:
ce = ln / (1000 * 60);
break;
case Calendar.DAY_OF_MONTH:
ce = calcBetweenDayNum(startDate, endDate);
break;
default:
break;
}
return ce;
}
public static Date dayBegin(Date d) {
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.setTime(d);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
public static Date dayEnd(Date d) {
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.setTime(d);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
public static Integer getWeekNum(Date today) {
Calendar cal = Calendar.getInstance(Locale.CHINA);
cal.setTime(today);
return cal.get(Calendar.DAY_OF_WEEK);
}
/***
* 获取日期所在周的周一
*
* @param day
* @return
*/
/**
* @param day
* @return
*/
public static Date monday(Date day) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setTime(day);
int num = calendar.get(Calendar.DAY_OF_WEEK);
num = num - 1;
num = (num == 0) ? 7 : num;
int ce = (1 - num);
calendar.add(Calendar.DATE, ce);
return calendar.getTime();
}
public static Date sunday(Date day) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setTime(monday(day));
calendar.add(Calendar.DAY_OF_MONTH, 6);
return calendar.getTime();
}
public static Date getWeekDay(Date curDate, WeekEnum weekEnum) {
Date weekDay = monday(curDate);
switch (weekEnum) {
case Sunday:
weekDay = sunday(curDate);
break;
default:
weekDay = addDay(weekDay, (weekEnum.getCode() - 2));
break;
}
return weekDay;
}
/***
* 获取日期所在月最后一天
*
* @param day
* @return
*/
public static Date monthFirstDay(Date day) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setTime(day);
calendar.set(Calendar.DAY_OF_MONTH, 1);
String ymdStr = DateUtils.formatDate(calendar.getTime(), DateUtils.YMD_PATTERN);
return DateUtils.parseDate(ymdStr + DateBeginPoint, DateUtils.YMDHMS_PATTERN);
}
public static Date monthLastDay(Date day) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setTime(monthFirstDay(day));
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
return calendar.getTime();
}
/***
* 获取当前日期季度的开始时间
*
* @param date
* @return
*/
public static Date quarterBegin(Date date) {
Quarter quarter = getQuarter(date);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
switch (quarter) {
case FIRST:
calendar.set(Calendar.MONTH, Calendar.JANUARY);
break;
case SECOND:
calendar.set(Calendar.MONTH, Calendar.APRIL);
break;
case THIRD:
calendar.set(Calendar.MONTH, Calendar.JULY);
break;
case FOURTH:
calendar.set(Calendar.MONTH, Calendar.OCTOBER);
break;
}
// System.out.println(DateUtils.formatDateTime(calendar.getTime()));
return calendar.getTime();
}
/***
* 获取当前日期所属季度的最后一天
*
* @param date
* @return
*/
public static Date quarterEnd(Date date) {
Quarter quarter = getQuarter(date);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
switch (quarter) {
case FIRST:
calendar.set(Calendar.MONTH, Calendar.APRIL);
break;
case SECOND:
calendar.set(Calendar.MONTH, Calendar.JULY);
break;
case THIRD:
calendar.set(Calendar.MONTH, Calendar.OCTOBER);
break;
case FOURTH:
calendar.set(Calendar.MONTH, Calendar.UNDECIMBER);
break;
}
calendar.add(Calendar.DAY_OF_MONTH, -1);
// System.out.println(DateUtils.formatDateTime(calendar.getTime()));
return calendar.getTime();
}
/**
* @Discription: 获取当前时间所在年份的第一天
* @Created on: 2021/5/28 9:25
* @author muyuanpei
*/
public static Date yearFirstDay(Date day) {
Calendar currCal = Calendar.getInstance();
if(null != day){
currCal.setTime(day);
}
int year = currCal.get(Calendar.YEAR);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
Date currYearFirst = calendar.getTime();
return currYearFirst;
}
/***
* 年度最后一天
*
* @param date
* @return
*/
public static Date yearLastDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(yearFirstDay(date));
cal.add(Calendar.YEAR, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
return cal.getTime();
}
/**
* 获取指定日期下个月的第一天
*
* @return
*/
public static Date getNextMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MONTH, 1);
return calendar.getTime();
}
/***
* 获取当月的第几周的哪一天
*
* @return
* @throws BizException
*/
public static Date getWeekBegin(Integer year, int month, int weekNo) throws BizException {
if (weekNo < 1) {
throw new BizException("周号不允许小于1");
}
// 获取这个月的第一天
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.set(year, month - 1, 1, 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date monthBegin = calendar.getTime();
Date monthEnd = monthLastDay(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, (weekNo - 1) * 7);
// 获取这周的开始时间
Date monday = getWeekDay(calendar.getTime(), WeekEnum.Monday);
if (monthEnd.compareTo(monday) < 0) {
throw new BizException(MessageFormat.format("{0}月没有第{1}周", month, weekNo));
}
return monthBegin.compareTo(monday) >= 0 ? monthBegin : monday;
}
/**
* @Discription: 获取当前月有多少周
* @Created on: 2020/11/5 16:12
* @author muyuanpei
*/
public static int getMonthWeekCount(Integer year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, (month - 1));
c.setFirstDayOfWeek(Calendar.MONDAY);
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月");
System.out.println("天数:" + c.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("Actual周数:" + c.getActualMaximum(Calendar.WEEK_OF_MONTH));
int actualMaximum = c.getActualMaximum(Calendar.WEEK_OF_MONTH);
return actualMaximum;
}
public static Date getWeekEnd(Integer year, int month, int weekNo) throws BizException {
if (weekNo < 1) {
throw new BizException("周号不允许小于1");
}
// 获取这个月的第一天
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1, 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
// 月最后一天
Date monthlastDay = monthLastDay(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, (weekNo - 1) * 7);
// 获取周日
Date sunDay = getWeekDay(calendar.getTime(), WeekEnum.Sunday);
// 获取周一
Date monday = getWeekDay(sunDay, WeekEnum.Monday);
if (monday.compareTo(monthlastDay) > 0) {
throw new BizException(MessageFormat.format("{0}月没有第{1}周", month, weekNo));
}
Date d = sunDay.compareTo(monthlastDay) >= 0 ? monthlastDay : sunDay;
return dayEnd(d);
}
/**
* @Discription: 获取当前月所有日期
* @Created on: 2021/6/9 14:54
* @author muyuanpei
*/
public static List<String> getFullDayList(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = format.format(date);
List<String> fullDayList = new ArrayList<String>();
int year = Integer.parseInt(dateStr.substring(0, 4));
int month = Integer.parseInt(dateStr.substring(5, 7));
int day = 1;// 所有月份从1号开始
Calendar cal = Calendar.getInstance();// 获得当前日期对象
cal.clear();// 清除信息
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);// 1月从0开始
cal.set(Calendar.DAY_OF_MONTH, day);
int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int j = 0; j <= (count - 1);) {
if (format.format(cal.getTime()).equals(monthLastDay(date)))
break;
cal.add(Calendar.DAY_OF_MONTH, j == 0 ? +0 : +1);
j++;
fullDayList.add(format.format(cal.getTime()));
}
return fullDayList;
}
public static enum Quarter {
FIRST, SECOND, THIRD, FOURTH;
}
/**
* @Discription: 获取两个时间段内所有日期 日期可跨年
* @Created on: 2021/6/9 14:56
* @author muyuanpei
*/
public static List<String> getBetweenDate(String begin,String end){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<String> betweenList = new ArrayList<String>();
try{
Calendar startDay = Calendar.getInstance();
startDay.setTime(format.parse(begin));
startDay.add(Calendar.DATE, -1);
while(true){
startDay.add(Calendar.DATE, 1);
Date newDate = startDay.getTime();
String newend=format.format(newDate);
betweenList.add(newend);
if(end.equals(newend)){
break;
}
}
}catch (Exception e) {
log.error("系统异常:",e);
}
return betweenList;
}
/****
* 获取日期是第几度
*
* @param date
* @return
*/
public static Quarter getQuarter(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
switch (month) {
case Calendar.JANUARY:
case Calendar.FEBRUARY:
case Calendar.MARCH:
return Quarter.FIRST;
case Calendar.APRIL:
case Calendar.MAY:
case Calendar.JUNE:
return Quarter.SECOND;
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.SEPTEMBER:
return Quarter.THIRD;
default:
return Quarter.FOURTH;
}
}
public static class QuarterOfYearQuery implements TemporalQuery<Quarter> {
@Override
public Quarter queryFrom(TemporalAccessor temporal) {
LocalDate now = LocalDate.from(temporal);
if (now.isBefore(now.with(Month.APRIL).withDayOfMonth(1))) {
return Quarter.FIRST;
} else if (now.isBefore(now.with(Month.JULY).withDayOfMonth(1))) {
return Quarter.SECOND;
} else if (now.isBefore(now.with(Month.NOVEMBER).withDayOfMonth(1))) {
return Quarter.THIRD;
} else {
return Quarter.FOURTH;
}
}
}
public static Integer whatWeek(Date date) {
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// Date date = format.parse(datetime);
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
Integer weekNumbe = calendar.get(Calendar.WEEK_OF_YEAR);
return weekNumbe;
}
// 根据year年的第week周,查询本周的起止时间
public static Map<String, Date> weekToDayFormate(int year, int week) {
Map<String, Date> map = new HashMap<String, Date>();
Calendar calendar = Calendar.getInstance();
// ①.设置该年份的开始日期:第一个月的第一天
calendar.set(year, 0, 1);
// ②.计算出第一周还剩几天:+1是因为1号是1天
int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
// ③.周数减去第一周再减去要得到的周
week = week - 2;
// ④.计算起止日期
calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
map.put("1", calendar.getTime());
System.out.println("开始日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
map.put("2", addDay(calendar.getTime(), 1));
map.put("3", addDay(calendar.getTime(), 2));
map.put("4", addDay(calendar.getTime(), 3));
map.put("5", addDay(calendar.getTime(), 4));
map.put("6", addDay(calendar.getTime(), 5));
calendar.add(Calendar.DAY_OF_YEAR, 6);
map.put("7", calendar.getTime());
System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
return map;
}
public static void main(String[] args) throws Exception {
List<String> fullDayList = getFullDayList(new Date());
System.out.println(fullDayList);
quarterEnd(new Date());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date sevenBeforeDate = DateUtils.addDay(new Date(), -6);
String nowDateStr = format.format(new Date());
String sevenBeforeDateStr = format.format(sevenBeforeDate);
List<String> betweenDate = DateUtils.getBetweenDate(sevenBeforeDateStr, nowDateStr);
System.out.println(nowDateStr);
}
/**
* @Discription: 判断日期是否合法 返回true合法 false不合法
* @Created on: 2021/4/2 16:12
* @author muyuanpei
*/
public static boolean isLegalDate(String dateStr) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setLenient(false);
try {
Date date = format.parse(dateStr);
return true;
} catch (ParseException pe) {
return false;
}
}
public static boolean isDayBegin(Calendar cal) {
return StringUtils.equals(DateUtils.formatDate(cal.getTime(), HMS_PATTERN), DateBeginPoint);
}
public static boolean isDayEnd(Calendar cal) {
return StringUtils.equals(DateUtils.formatDate(cal.getTime(), HMS_PATTERN), DateEndPoint);
}
/**
* 获取未来 第 past 天的日期
*
* @param past
* @return
*/
public static String getFetureDate(int past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String result = format.format(today);
return result;
}
/**
* 获取当前日期是星期几
*
* @param dt
* @return 当前日期是星期几
*/
public static WeekEnum getWeekOfDate(Date dt) {
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
return WeekEnum.forCode(cal.get(Calendar.DAY_OF_WEEK));
}
网友评论