package cn.timer.api.utils; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import cn.hutool.core.util.StrUtil; public class DateUtil { static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); /** * 获取0点 * * @return */ public static Date getStartTime(int day) { Calendar todayStart = Calendar.getInstance(); todayStart.set(Calendar.HOUR_OF_DAY, day); todayStart.set(Calendar.MINUTE, 0); todayStart.set(Calendar.SECOND, 0); todayStart.set(Calendar.MILLISECOND, 0); return todayStart.getTime(); } /** * 根据时间戳获取0点 * * @return */ public static Date getStartTime(int day, long time) { Calendar todayStart = Calendar.getInstance(); todayStart.setTimeInMillis(time); todayStart.set(Calendar.HOUR_OF_DAY, day); todayStart.set(Calendar.MINUTE, 0); todayStart.set(Calendar.SECOND, 0); todayStart.set(Calendar.MILLISECOND, 0); return todayStart.getTime(); } /** * 获取23点 * * @return */ public static Date getnowEndTime(int day) { Calendar todayEnd = Calendar.getInstance(); todayEnd.set(Calendar.HOUR_OF_DAY, day); todayEnd.set(Calendar.MINUTE, 59); todayEnd.set(Calendar.SECOND, 59); todayEnd.set(Calendar.MILLISECOND, 999); return todayEnd.getTime(); } /** * 根据时间戳获取23点 * * @return */ public static Date getnowEndTime(int day, long time) { Calendar todayEnd = Calendar.getInstance(); todayEnd.setTimeInMillis(time); todayEnd.set(Calendar.HOUR_OF_DAY, day); todayEnd.set(Calendar.MINUTE, 59); todayEnd.set(Calendar.SECOND, 59); todayEnd.set(Calendar.MILLISECOND, 999); return todayEnd.getTime(); } /** * 将String时间转换为时间戳 * * @param time * @return * @throws ParseException */ public static long getFormat(String time) throws ParseException { if (StrUtil.isNotBlank(time)) { switch (time.length()) { case 10: return getStringTime(time, "yyyy-MM-dd"); case 16: return getStringTime(time, "yyyy-MM-dd HH:mm"); case 19: return getStringTime(time, "yyyy-MM-dd HH:mm:ss"); default: break; } return 0; } return 0; } /** * 将String时间转换为时间戳 * * @param time * @return * @throws ParseException */ public static Date getFormatDate(String time) throws ParseException { if (StrUtil.isNotBlank(time)) { switch (time.length()) { case 10: return getStringDate(time, "yyyy-MM-dd"); case 16: return getStringDate(time, "yyyy-MM-dd HH:mm"); case 19: return getStringDate(time, "yyyy-MM-dd HH:mm:ss"); default: break; } return null; } return null; } /** * 将String时间转换为时间戳 * * @param time * @return * @throws ParseException */ public static Date getStringDate(String time, String format) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.parse(time); } /** * 将String时间转换为 Date * * @param time * @return * @throws ParseException */ public static long getStringTime(String time, String format) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); Date date = simpleDateFormat.parse(time); return date.getTime(); } /** * 根据时间戳获取当前年月日 * * @param time * @return */ public static String getStringFormat(long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(time); return simpleDateFormat1.format(date); } /** * 根据时间戳获取当前年月日 * * @param time * @return */ public static String getStringFormat(long time,String format) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(format); Date date = new Date(time); return simpleDateFormat1.format(date); } /** * 根据时间戳获取当前年月日 * * @param time * @return */ public static String getStringFormatVehicle(long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date = new Date(time); return simpleDateFormat1.format(date); } /** * 根据时间戳获取当前时分 * * @param time * @return */ public static String getStringDate(long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm"); Date date = new Date(time); return simpleDateFormat1.format(date); } /** * 时间累计增长 * * @param date * @param minute * @return */ public static String getGrowth(Date date, int minute) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(now.getTime()); } /** * 时间累计增长 * * @param date * @param minute * @return */ public static String getReduce(Date date, int minute) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) - minute); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(now.getTime()); } /** * 获取当前年份 * * @return */ public static int getYear() { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); return year; } /** * 获取当前月份 * * @return */ public static int getMonth() { Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH) + 1; return month; } /** * 获取当前日期 * * @return */ public static int getDate() { Calendar cal = Calendar.getInstance(); int date = cal.get(Calendar.DATE); return date; } /** * 根据时间戳返回日期时间 * * @param time * @return */ public static int getDay(Long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("dd"); Date date = new Date(time); String day = simpleDateFormat1.format(date); return Integer.valueOf(day); } /** * 根据时间戳返回日期时间 * * @param time * @return */ public static int getMonth(Long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("MM"); Date date = new Date(time); String day = simpleDateFormat1.format(date); return Integer.valueOf(day); } /** * 根据时间戳返回日期时间 * * @param time * @return */ public static int getYear(Long time) { SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy"); Date date = new Date(time); String day = simpleDateFormat1.format(date); return Integer.valueOf(day); } /** * 获取前一个月最后一天 * * @return */ public static int getLastDay() { Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.DAY_OF_MONTH, 0); SimpleDateFormat sdf = new SimpleDateFormat("dd"); String lastDay = sdf.format(calendar2.getTime()); return Integer.valueOf(lastDay); } /** * 获取前一个月月份 * * @return */ public static int getLastMonth() { Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.DAY_OF_MONTH, 0); SimpleDateFormat sdf = new SimpleDateFormat("MM"); String lastDay = sdf.format(calendar2.getTime()); return Integer.valueOf(lastDay); } /** * 获取前一个月年份 * * @return */ public static int getLastYear() { Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.DAY_OF_MONTH, 0); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); String lastDay = sdf.format(calendar2.getTime()); return Integer.valueOf(lastDay); } /** * 将字符串转化为日期 * * @param timestr * @return */ public static Date paraseStringToDate(String timestr) { Date date = null; Format f = new SimpleDateFormat("yyyy-MM-dd"); try { date = (Date) f.parseObject(timestr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 根据传入的日期获取所在月份所有日期 * * @param d * @return */ public static List<String> getAllDaysMonthByDate(Date d) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<String> lst = new ArrayList<String>(); Date date = getMonthStart(d); Date monthEnd = getMonthEnd(d); while (!date.after(monthEnd)) { lst.add(sdf.format(date)); date = getNext(date); } return lst; } private static Date getNext(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, 1); return calendar.getTime(); } private static Date getMonthEnd(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); int index = calendar.get(Calendar.DAY_OF_MONTH); calendar.add(Calendar.DATE, (-index)); return calendar.getTime(); } private static Date getMonthStart(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int index = calendar.get(Calendar.DAY_OF_MONTH); calendar.add(Calendar.DATE, (1 - index)); return calendar.getTime(); } /** * 根据年月日获取当月第一天日期时间戳 * * @param time * @return */ public static long getFirstDayOfMonth(String time) { Date date = paraseStringToDate(time); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); return calendar.getTime().getTime(); } /** * 根据年月日获取当月最后一天日期时间戳 * * @param time * @return */ public static long getLastDayOfMonth(String time) { Date date = paraseStringToDate(time); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); calendar.add(Calendar.MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH, -1); return calendar.getTime().getTime(); } /** * 获取月份起始日期 * * @param date * @return * @throws ParseException */ public static String getMinMonthDate(String date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(dateFormat.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return dateFormat.format(calendar.getTime()); } /** * 获取月份最后日期 * * @param date * @return * @throws ParseException */ public static String getMaxMonthDate(String date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(dateFormat.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return dateFormat.format(calendar.getTime()); } /** * * 描述:获取下一个月的第一天. * * @return */ public static String getPerFirstDayOfMonth() { SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return dft.format(calendar.getTime()); } }