integrated_traffic/src/main/java/com/zcloud/util/DateUtil.java

876 lines
28 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.zcloud.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 说明:日期处理
* 作者luoxiaobao
* 官网www.qdkjchina.com
*/
public class DateUtil {
private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
private final static SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
private final static SimpleDateFormat sdfOnlyDay = new SimpleDateFormat("dd");
private final static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");
private final static SimpleDateFormat sdfMDay = new SimpleDateFormat("yyyy-M-d");
private final static SimpleDateFormat sdfDays = new SimpleDateFormat("yyyyMMdd");
private final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");
/**
* 获取YYYY格式
*
* @return
*/
public static String getSdfTimes() {
return sdfTimes.format(new Date());
}
/**
* 获取YYYY格式
*
* @return
*/
public static String getYear() {
return sdfYear.format(new Date());
}
public static String getYear(Date date) {
return sdfYear.format(date);
}
public static String getMonth() {
return sdfMonth.format(new Date());
}
/**
* 获取DD格式
*
* @return
*/
public static String getOnlyDay() {
return sdfOnlyDay.format(new Date());
}
/**
* 获取YYYY-MM-DD格式
*
* @return
*/
public static String getDay() {
return sdfDay.format(new Date());
}
public static String MDay() {
return sdfMDay.format(new Date());
}
/**
* 获取YYYYMMDD格式
*
* @return
*/
public static String getDays() {
return sdfDays.format(new Date());
}
/**
* 获取YYYY-MM-DD HH:mm:ss格式
*
* @return
*/
public static String getTime() {
return sdfTime.format(new Date());
}
/**
* @param s
* @param e
* @return boolean
* @throws
* @Title: compareDate
* @Description: TODO(日期比较 如果s > = e 返回true 否则返回false)
* @author fh
*/
public static boolean compareDate(String s, String e) {
if (fomatDate(s) == null || fomatDate(e) == null) {
return false;
}
return fomatDate(s).getTime() >= fomatDate(e).getTime();
}
/**
* 格式化日期
*
* @return
*/
public static Date fomatDate(String date) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
try {
return fmt.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 格式化日期
*
* @return
*/
public static Date fomatDateTime(String date) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return fmt.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 校验日期是否合法
*
* @return
*/
public static boolean isValidDate(String s) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
try {
fmt.parse(s);
return true;
} catch (Exception e) {
return false; // 如果throw java.text.ParseException或者NullPointerException就说明格式不对
}
}
/**
* @param startTime
* @param endTime
* @return
*/
public static int getDiffYear(String startTime, String endTime) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
try {
int years = (int) (((fmt.parse(endTime).getTime() - fmt.parse(startTime).getTime()) / (1000 * 60 * 60 * 24)) / 365);
return years;
} catch (Exception e) {
return 0; // 如果throw java.text.ParseException或者NullPointerException就说明格式不对
}
}
/**
* <li>功能描述:时间相减得到天数
*
* @param beginDateStr
* @param endDateStr
* @return long
* @author Administrator
*/
public static long getDaySub(String beginDateStr, String endDateStr) {
long day = 0;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = null;
Date endDate = null;
try {
beginDate = format.parse(beginDateStr);
endDate = format.parse(endDateStr);
} catch (ParseException e) {
e.printStackTrace();
}
day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
//System.out.println("相隔的天数="+day);
return day;
}
/**
* 得到n天之后的日期
*
* @param days
* @return
*/
public static String getAfterDayDate(String days) {
int daysInt = Integer.parseInt(days);
Calendar canlendar = Calendar.getInstance(); // java.util包
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
Date date = canlendar.getTime();
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdfd.format(date);
return dateStr;
}
/**
* 当前时间加n小时之后的时间
*
* @param days
* @return
*/
public static String getAfterHourDate(String hours) {
int hoursInt = Integer.parseInt(hours);
Calendar canlendar = Calendar.getInstance(); // java.util包
canlendar.add(Calendar.HOUR, hoursInt); // 日期减 如果不够减会将月变动
Date date = canlendar.getTime();
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdfd.format(date);
return dateStr;
}
/**
* 得到n天之后是周几
*
* @param days
* @return
*/
public static String getAfterDayWeek(String days) {
int daysInt = Integer.parseInt(days);
Calendar canlendar = Calendar.getInstance(); // java.util包
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
Date date = canlendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("E");
String dateStr = sdf.format(date);
return dateStr;
}
/**
* 按照yyyy-MM-dd HH:mm:ss的格式日期转字符串
*
* @param date
* @return yyyy-MM-dd HH:mm:ss
*/
public static String date2Str(Date date) {
return date2Str(date, "yyyy-MM-dd HH:mm:ss");
}
public static String date3Str(Date date) {
return date2Str(date, "yyyy-M-d");
}
/**
* 按照yyyy-MM-dd HH:mm:ss的格式字符串转日期
*
* @param date
* @return
*/
public static Date str2Date(String date) {
if (Tools.notEmpty(date)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return new Date();
} else {
return null;
}
}
/**
* 把时间根据时、分、秒转换为时间段
*
* @param StrDate
*/
public static String getTimes(String StrDate) {
String resultTimes = "";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now;
try {
now = new Date();
Date date = df.parse(StrDate);
long times = now.getTime() - date.getTime();
long day = times / (24 * 60 * 60 * 1000);
long hour = (times / (60 * 60 * 1000) - day * 24);
long min = ((times / (60 * 1000)) - day * 24 * 60 - hour * 60);
long sec = (times / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
StringBuffer sb = new StringBuffer();
//sb.append("发表于:");
if (hour > 0) {
sb.append(hour + "小时前");
} else if (min > 0) {
sb.append(min + "分钟前");
} else {
sb.append(sec + "秒前");
}
resultTimes = sb.toString();
} catch (ParseException e) {
e.printStackTrace();
}
return resultTimes;
}
/**
* 按照参数format的格式日期转字符串
*
* @param date
* @param format
* @return
*/
public static String date2Str(Date date, String format) {
if (date != null) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
} else {
return "";
}
}
/**
* 获取当年的第一天
*
* @param year
* @return
* @author zhangyue
*/
public static String getCurrYearFirst() {
Calendar currCal = Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, currentYear);
Date currYearFirst = calendar.getTime();
return sdfDay.format(currYearFirst);
}
/**
* 获取当年的最后一天
*
* @param year
* @return
* @author zhangyue
*/
public static String getCurrYearLast() {
Calendar currCal = Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, currentYear);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = calendar.getTime();
return sdfDay.format(currYearLast);
}
/**
* 获取当前季度第一天
*
* @return
* @author zhangyue
*/
public static String quarterStart() {
Date dBegin = new Date();
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
int remainder = calBegin.get(Calendar.MONTH) % 3;
int month = remainder != 0 ? calBegin.get(Calendar.MONTH) - remainder : calBegin.get(Calendar.MONTH);
calBegin.set(Calendar.MONTH, month);
calBegin.set(Calendar.DAY_OF_MONTH, calBegin.getActualMinimum(Calendar.DAY_OF_MONTH));
calBegin.setTime(calBegin.getTime());
return sdfDay.format(calBegin.getTime());
}
/**
* 获取当前季度最后一天
*
* @return
* @author zhangyue
*/
public static String quarterEnd() {
Date dEnd = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(dEnd);
int remainder = (calendar.get(Calendar.MONTH) + 1) % 3;
int month = remainder != 0 ? calendar.get(Calendar.MONTH) + (3 - remainder) : calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
calendar.setTime(calendar.getTime());
return sdfDay.format(calendar.getTime());
}
/**
* 获取本月第一天日期
*
* @return
*/
public static String getMonthFirstDay() {
Calendar thisMonthFirstDateCal = Calendar.getInstance();
thisMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
String thisMonthFirstTime = sdfDay.format(thisMonthFirstDateCal.getTime());
return thisMonthFirstTime;
}
/**
* 获取本月最后一天日期
*
* @return
*/
public static String getMonthEndDay() {
Calendar thisMonthEndDateCal = Calendar.getInstance();
thisMonthEndDateCal.set(Calendar.DAY_OF_MONTH, thisMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH));
String thisMonthEndTime = sdfDay.format(thisMonthEndDateCal.getTime());
return thisMonthEndTime;
}
public static boolean timeCalendar(Date nowTime, Date amBeginTime, Date amEndTime) {
//设置当前时间
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
//设置开始时间
Calendar amBegin = Calendar.getInstance();
amBegin.setTime(amBeginTime);//上午开始时间
//设置结束时间
Calendar amEnd = Calendar.getInstance();
amEnd.setTime(amEndTime);//上午结束时间
//处于开始时间之后,和结束时间之前的判断
if ((date.after(amBegin) && date.before(amEnd))) {
return true;
} else {
return false;
}
}
/**
* 获取本周的第一天
*
* @return String
**/
public static String getWeekStart() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
Calendar cal = Calendar.getInstance();
// Calendar c = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 0);
// cal.setTime(time);
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
/*
* cal.add(Calendar.DATE, 6);
* System.out.println("所在周星期日的日期:"+sdf.format(cal.getTime()));
*/
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()) + " 00:00:00";
}
/**
* 获取本周的最后一天
*
* @return String
**/
public static String getWeekEnd() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
Calendar cal = Calendar.getInstance();
// Calendar c = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 0);
// cal.setTime(time);
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, 6);
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()) + " 23:59:59";
}
/**
* 判断时间格式 格式必须为“YYYY-MM-dd”
* 2004-2-30 是无效的
* 2003-2-29 是无效的
*
* @param sDate
* @return
*/
public static boolean isLegalDate(String sDate) {
int legalLen = 10;
if ((sDate == null) || (sDate.length() != legalLen)) {
return false;
}
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = formatter.parse(sDate);
return sDate.equals(formatter.format(date));
} catch (Exception e) {
return false;
}
}
/**
* 时间比较
*
* @param amBeginTime
* @param amEndTime
* @return
*/
public static boolean timeCompare(Date amBeginTime, Date amEndTime) {
//设置开始时间
Calendar amBegin = Calendar.getInstance();
amBegin.setTime(amBeginTime);//上午开始时间
//设置结束时间
Calendar amEnd = Calendar.getInstance();
amEnd.setTime(amEndTime);//上午结束时间
//开始时间是否早于结束时间
if (amBegin.before(amEnd)) {
return true;
} else {
return false;
}
}
/**
* 获取6个月内月份日期
*
* @param flag 结果是否显示年份
* @return
*/
public static List<String> getHalfYearMonth(boolean flag) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -4);
String before_six = c.get(Calendar.YEAR) + "-" + c.get(Calendar.MONTH);// 六个月前
List<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
try {
min.setTime(sdf.parse(before_six));
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(sdf.parse(sdf.format(new Date())));
//不含当前月
/* int month = max.get(Calendar.MONTH);
max.set(Calendar.MONTH, month-1);
*/
} catch (ParseException e) {
e.printStackTrace();
}
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
if (flag) {
result.add(sdf.format(curr.getTime()));
} else {
result.add(curr.get(Calendar.MONTH) + 1 + "月");
}
curr.add(Calendar.MONTH, 1);
}
return result;
}
//根据当前日期获得最近n周的日期区间不包含本周
public static String getFromToDate(SimpleDateFormat sdf, Date date, int n, int option, int k) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
int offset = 0 == option ? 1 - dayOfWeek : 7 - dayOfWeek;
int amount = 0 == option ? offset - (n - 1 + k) * 7 : offset - k * 7;
calendar.add(Calendar.DATE, amount);
return sdf.format(calendar.getTime());
}
public static SimpleDateFormat sdf() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
// 获取上周的开始时间
public static String getBeginDayOfLastWeek() {
//上周日期
SimpleDateFormat sdf = sdf();
String beginDate = getFromToDate(sdf, new Date(), 1, 0, 1);
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(beginDate));
} catch (Exception e) {
e.printStackTrace();
}
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return sdf.format(calendar.getTime());
}
// 获取上周的结束时间
public static String getEndDayOfLastWeek() {
//上周日期
SimpleDateFormat sdf = sdf();
String endDate = getFromToDate(sdf, new Date(), 1, 1, 1);
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(endDate));
} catch (Exception e) {
e.printStackTrace();
}
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return sdf.format(calendar.getTime());
}
// 获得上月第一天0点时间
public static String getTimesLastMonthmorning() {
//上月日期
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat sdf = sdf();
String gtimelast = sdf.format(c.getTime()); //上月
int lastMonthMaxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
//按格式输出
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");
String gtime = sdf2.format(c.getTime()); //上月第一天
return gtime;
}
// 获得上月最后一天24点时间
public static String getTimesLastMonthnight() {
//上月日期
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat sdf = sdf();
String gtimelast = sdf.format(c.getTime()); //上月
int lastMonthMaxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
//按格式输出
String gtime = sdf.format(c.getTime()); //上月最后一天
return gtime;
}
/**
* 获取上一季度 开始和结束时间
*
* @return
*/
public static String[] getLastQuarter() {
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd");
String[] range = new String[2];
Calendar startCalendar = Calendar.getInstance();
startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
startCalendar.set(Calendar.DAY_OF_MONTH, 1);
Date startDate = startCalendar.getTime();
range[0] = sdfd.format(startDate);
Calendar endCalendar = Calendar.getInstance();
endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date endDate = endCalendar.getTime();
range[1] = sdfd.format(endDate);
return range;
}
/**
* 获取当日期前/后某个月的所有日期 0 本月 负数 之前的月份 。正数 之后的月份
*
* @param months
* @return
*/
public static List<String> getDayListOfMonth(Integer months) {
List<String> list = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + months);
int month = cal.get(Calendar.MONTH) + 1;
String monthStr = month < 10 ? "0" + month : String.valueOf(month);
int year = cal.get(Calendar.YEAR);
int day = cal.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= day; i++) {
String d = String.valueOf(i);
if (i < 10) {
d = "0" + d;
}
list.add(year + "-" + monthStr + "-" + d);
}
return list;
}
/**
* 计算两个日期之间相差的天数
*
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
*/
public static int daysBetween(Date smdate, Date bdate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
smdate = sdf.parse(sdf.format(smdate));
bdate = sdf.parse(sdf.format(bdate));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 字符串的日期格式的计算
*/
public static int daysBetween(String smdate, String bdate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
long time1 = 0;
long time2 = 0;
try {
cal.setTime(sdf.parse(smdate));
time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
time2 = cal.getTimeInMillis();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 得到几天前的时间
*
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d, int day) {
Calendar now = Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
return now.getTime();
}
/**
* 得到几天后的时间
*
* @param d
* @param day
* @return
*/
public static Date getDateAfter(Date d, int day) {
Calendar now = Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE, now.get(Calendar.DATE) + day - 1);
return now.getTime();
}
/**
* 格式化日期
*
* @return
*/
public static Date fomatDateByNian(String date) {
DateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日");
try {
return fmt.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String afterHourDate = DateUtil.getAfterHourDate("12");
System.out.println(afterHourDate);
}
/**
* 时间换算(秒级)
*/
public static String calculateDateSecond(String dateStr, int second) {
Date date = str2Date(dateStr);
if (date != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
SimpleDateFormat sdf = sdf();
return sdf.format(calendar.getTime());
}
return "";
}
/**
* @Description: 返回从当前月份到指定月份的开始和结束时间
* {dateBegin=2023-07-01 00:00:00, month=2023-07, dateEnd=2023-07-31 23:59:59}
* {dateBegin=2023-08-01 00:00:00, month=2023-08, dateEnd=2023-08-31 23:59:59}
* {dateBegin=2023-09-01 00:00:00, month=2023-09, dateEnd=2023-09-30 23:59:59}
* {dateBegin=2023-10-01 00:00:00, month=2023-10, dateEnd=2023-10-31 23:59:59}
* {dateBegin=2023-11-01 00:00:00, month=2023-11, dateEnd=2023-11-30 23:59:59}
* {dateBegin=2023-12-01 00:00:00, month=2023-12, dateEnd=2023-12-31 23:59:59}
* {dateBegin=2024-01-01 00:00:00, month=2024-01, dateEnd=2024-01-31 23:59:59}
* @Author: dearLin
* @Date: 2024/1/29/029 14:12
* @Param: [] []
* @Return: java.util.List<java.util.Map<java.lang.String,java.lang.String>>
*/
public static List<Map<String, String>> generateTimeArraySevenMonth(int monthIndex) {
List<Map<String, String>> timeArray = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = monthIndex; i >= 0; i--) {
Map<String, String> monthInfo = new HashMap<>();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
String monthString = String.format(year + "-%02d", month);
String firstDayOfMonth = String.format("%04d-%02d-01 00:00:00", year, month);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
String lastDayOfMonth = dateFormat.format(calendar.getTime());
monthInfo.put("month", monthString);
monthInfo.put("dateBegin", firstDayOfMonth);
monthInfo.put("dateEnd", lastDayOfMonth);
timeArray.add(monthInfo);
calendar.add(Calendar.MONTH, -1); // Go to the previous month
}
Collections.reverse(timeArray);
return timeArray;
}
}