package com.hqsf.hqsfapp.pos.front.utils; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 日期工具类 * */ public class DateUtils { /** * 某一个月第一天和最后一天 * @param date * @return */ public static Map<String, String> getFirstday_Lastday_Month(Date date) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // calendar.add(Calendar.MONTH, -1);上个月 Date theDate = calendar.getTime(); // 第一天 GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance(); gcLast.setTime(theDate); gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first = df.format(gcLast.getTime()); StringBuffer str = new StringBuffer().append(day_first).append(" 00:00:00"); day_first = str.toString(); // 最后一天 calendar.add(Calendar.MONTH, 1); // 加一个月 calendar.set(Calendar.DATE, 1); // 设置为该月第一天 calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天 String day_last = df.format(calendar.getTime()); StringBuffer endStr = new StringBuffer().append(day_last).append(" 23:59:59"); day_last = endStr.toString(); Map<String, String> map = new HashMap<String, String>(); map.put("first", day_first); map.put("last", day_last); return map; } /** * 月最后一天 * @param year_month yyyy-MM * @return */ public static Date getLastDayOfBillDate(String year_month) { try { Map<String, String> firstday_Lastday_Month = DateUtils.getFirstday_Lastday_Month(new SimpleDateFormat( "yyyy-MM").parse(year_month)); return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(firstday_Lastday_Month.get("last")); } catch (ParseException e) { throw new RuntimeException("年月格式不正确"); } } /** * 月第一天 * @param year_month yyyy-MM * @return */ public static Date getFirstDayOfBillDate(String year_month) { try { Map<String, String> firstday_Lastday_Month = DateUtils.getFirstday_Lastday_Month(new SimpleDateFormat( "yyyy-MM").parse(year_month)); return new SimpleDateFormat("yyyy-MM-dd").parse(firstday_Lastday_Month.get("first")); } catch (ParseException e) { throw new RuntimeException("年月格式不正确"); } } /** * 上个月 * @param year_month yyyy-MM * @return */ public static String getUpYearMonth(String year_month) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdf.parse(year_month)); calendar.add(Calendar.MONTH, -1); String upYearMonth = sdf.format(calendar.getTime()); return upYearMonth; } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 前一天 * @param date * @return */ public static Date getYesterday(Date date) { Date dBefore = new Date(); Calendar calendar = Calendar.getInstance(); //得到日历 calendar.setTime(date);//把当前时间赋给日历 calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天 dBefore = calendar.getTime(); //得到前一天的时间 return dBefore; } /*** * 日期字符串转为日期 * @param dateStr 格式yyyy-MM-dd HH:mm:ss * @return */ public static Date getDateByString(String dateStr){ try { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr); } catch (ParseException e) { return null; } } /*** * 日期字符串转为日期 * @param dateStr 格式yyyy-MM-dd * @return */ public static Date getShortDateByString(String dateStr){ try { return new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); } catch (ParseException e) { return null; } } /** * 某个月的天数 * @param yearMonth * @return */ public static int getDayNumOfMonth(String yearMonth){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Calendar calendar = new GregorianCalendar(); Date date1; try { date1 = sdf.parse(yearMonth); } catch (ParseException e) { return -1; } calendar.setTime(date1); //放入你的日期 return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 当月第一天和当月的最后一天 * @return */ public static Map<String, Object> getFirstDateAndLastDate() { Calendar startCalendar = Calendar.getInstance(); startCalendar.set(Calendar.DAY_OF_MONTH,1); startCalendar.set(Calendar.HOUR_OF_DAY, 0); startCalendar.set(Calendar.MINUTE, 0); startCalendar.set(Calendar.SECOND, 0); Calendar endCalendar = Calendar.getInstance(); endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); endCalendar.set(Calendar.HOUR_OF_DAY, 23); endCalendar.set(Calendar.MINUTE, 59); endCalendar.set(Calendar.SECOND, 59); Map<String, Object> map = new HashMap<String, Object>(); map.put("firstDate", startCalendar.getTime()); map.put("nowDate", endCalendar.getTime()); return map; } /** * 上个月第一天和最后一天 * @return */ public static Map<String, Object> getUpMonFirstDateAndLastDate() { Calendar startCalendar = Calendar.getInstance(); startCalendar.add(Calendar.MONTH, -1); // 上一个月 startCalendar.set(Calendar.DAY_OF_MONTH,1); startCalendar.set(Calendar.HOUR_OF_DAY, 0); startCalendar.set(Calendar.MINUTE, 0); startCalendar.set(Calendar.SECOND, 0); Calendar endCalendar = Calendar.getInstance(); endCalendar.set(Calendar.DATE, 1); // 设置为该月第一天 endCalendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天 endCalendar.set(Calendar.HOUR_OF_DAY, 23); endCalendar.set(Calendar.MINUTE, 59); endCalendar.set(Calendar.SECOND, 59); Map<String, Object> map = new HashMap<String, Object>(); map.put("upDate", startCalendar.getTime()); map.put("upLastDate", endCalendar.getTime()); return map; } /** * 日期转为日期字符串 * @param * @return */ public static String getDateByString(Date date){ return new SimpleDateFormat("yyyy-MM-dd").format(date); } /** * 日期转为日期字符串:yyyy-MM-dd 00:00:00 */ public static String getLongStartTimeByString(Date date){ return getDateByString(date) + " 00:00:00"; } /** * 日期转为日期字符串:yyyy-MM-dd 23:59:59 */ public static String getLongEndTimeByString(Date date){ return getDateByString(date) + " 23:59:59"; } /** * 日期转为日期字符串 * @param * @return */ public static String getLongDateByString(Date date){ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); } /** * 月的第一天 */ public static String getFirstDay(Date date) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // calendar.add(Calendar.MONTH, -1);上个月 Date theDate = calendar.getTime(); // 第一天 GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance(); gcLast.setTime(theDate); gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first = df.format(gcLast.getTime()); return day_first; } /** * 日期相差天数 */ public static int daysBetween(String startDate, String endDate) { try { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(startDate)); long time1 = cal.getTimeInMillis(); cal.setTime(sdf.parse(endDate)); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); } catch (ParseException e) { e.printStackTrace(); } return 0; } /** * 返回当前日期 date 格式 */ public static Date getCurrentDate() { return new Date(); } /** * 返回String类型当前日期, 按format格式 */ public static String getCurrentDate(String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date()); } public static Date getDateByFormat(String dateStr, String format) { if (StringUtils.isBlank(dateStr) || StringUtils.isBlank(format)) { return null; } Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * 获取本周的周一 * @return */ public static String getWeekStart() { return DateTime.now().dayOfWeek().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取本周的周末 * @return */ public static String getWeekEnd(){ return DateTime.now().dayOfWeek().withMaximumValue().toString("yyyy-MM-dd"); } /** * 获取当月的第一天 * @return */ public static String getMonthStart() { return DateTime.now().dayOfMonth().withMinimumValue().toString("yyyy-MM-dd"); } /** * 获取当月的最后一天 * @return */ public static String getMonthEnd() { return DateTime.now().dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"); } /** * 运算当前日期减去多少天 * @param date * @param day * @return */ public static Date getSubDayOfMonth(Date date, int day) { DateTime d = new DateTime(date); d = d.minusDays(day); return d.toDate(); } /** * 格式化日期的时间部分为 00:00:00 * @param subDayOfMonth * @return */ public static Date getStartDate(Date subDayOfMonth) { DateTime dateTime = new DateTime(subDayOfMonth); dateTime = dateTime.withHourOfDay(00).withMinuteOfHour(00).withSecondOfMinute(00); return dateTime.toDate(); } public static Date getEndDate(Date date) { DateTime dateTime = new DateTime(date); dateTime = dateTime.withHourOfDay(23).withMinuteOfHour(59).withSecondOfMinute(59); return dateTime.toDate(); } /** * 日期格式化 * @param date * @param formatStyle * @return */ public static String formatDateToStr(Date date,String formatStyle) { DateTime dateTime = new DateTime(date); return dateTime.toString(formatStyle); } /** * 格式化 当前日期算起X天的 00:00:00秒 * @param date * @param datetimestyle * @return */ public static String getDayBeforeXStart(Date date,int day, String datetimestyle) { return formatDateToStr(getStartDate(DateUtils.getSubDayOfMonth(date,day)),datetimestyle); } public static void main(String[] args) { Date d = getSubDayOfMonth(new Date(),9); DateTime d2 = new DateTime(d); d = getEndDate(d2.toDate()); System.out.println(d.toLocaleString()); } /** * 格式化当前日期算起的X天前的 23:59:59 * @param date * @param day * @param datetimestyle * @return */ public static String getDayBeforeXEnd(Date date, int day, String datetimestyle) { return formatDateToStr(getStartDate(DateUtils.getSubDayOfMonth(date,day)),datetimestyle); } /** * 格式化指定日期的 23:59:59 * @param date * @param datetimestyle * @return */ public static String getDayBeforeXEnd(Date date,String datetimestyle) { return formatDateToStr(getEndDate(new Date()),datetimestyle); } /** * 获得本周一0点时间 * * @return */ public static Date getTimesWeekmorning() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return cal.getTime(); } }
日期工具类
最新推荐文章于 2024-05-15 23:55:17 发布