package com.steerinfo.ems.Utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class DateUtils { /** * 日期转换为字符串 格式自定义 * * @param date * @param timeformat * @return */ public static String dateStr(Date date, String timeformat) { if (date == null) { return ""; } String str = new SimpleDateFormat(timeformat).format(date); return str; } public static String dateStr(Date date) { if (date == null) { return ""; } String str = new SimpleDateFormat("yyyy-mm-dd").format(date); return str; } /** * 时间戳转标准时间 * * @param stap 时间戳 * @return */ public static String stampToDate(String stap){ String time; try { if (stap == null || stap.length() == 0) { time = null; } else { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { long lt = new Long(stap); date = new Date(lt); } catch(Exception e) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(stap); } time = simpleDateFormat.format(date); } } catch (Exception e) { time = null; e.printStackTrace(); } return time; } /** * 时间序列偏移量 偏移量自定义 * * @param time * @param offsetinfo 偏移量 * @return */ public static Date offsetDate(Date time,String offsetinfo) { String[] offsetinfoarray = offsetinfo.split(","); Calendar cal = Calendar.getInstance(); cal.setTime(time); for (int i =0;i < offsetinfoarray.length;i++){ if(offsetinfoarray[i] != null && !"".equals(offsetinfoarray[i])){ String timegran = offsetinfoarray[i].substring(0, offsetinfoarray[i].length() - 2); int offset = Integer.parseInt(offsetinfoarray[i].substring(offsetinfoarray[i].length() - 2)); switch (timegran){ case "ss": cal.add(Calendar.SECOND, offset); break; case "mm": cal.add(Calendar.MINUTE, offset); break; case "HH": cal.add(Calendar.HOUR, offset); break; case "dd": cal.add(Calendar.DATE, offset); break; case "MM": cal.add(Calendar.MONTH, offset); break; case "yyyy": cal.add(Calendar.YEAR, offset); break; } } } return cal.getTime(); } public static List getMonitortime(String timegran, String time, String starttime) { List list = new ArrayList(); if("YEAR".equals(timegran)){ list.add(time); } else{ try { Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(starttime);//定义开始日期 Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse((Integer.parseInt(time) + 1) + "-01-01");//定义结束日期 Calendar dd = Calendar.getInstance();//定义日期实例 dd.setTime(d1);//设置日期起始时间 while(dd.getTime().before(d2)) {//判断是否到结束日期 if ("MONTH".equals(timegran)) { list.add(dateStr(dd.getTime(), "yyyy-MM")); dd.add(Calendar.MONTH, 1); } else{ list.add(dateStr(dd.getTime(), "yyyy-MM-dd")); dd.add(Calendar.DAY_OF_YEAR, 1); } } } catch (ParseException e){ e.printStackTrace(); } } return list; } /** * 自动补全日期并返回新日期 偏移量自定义 * * @param time 时间 * @param interval 偏移量 * @return */ public static String changeTime(String time,int interval){ Calendar dd = Calendar.getInstance(); try{ if(time.length() == 4){ Date d = new SimpleDateFormat("yyyy-MM-dd").parse(time+"-01-01"); dd.setTime(d); dd.add(Calendar.YEAR, interval); } if(time.length() == 7){ Date d = new SimpleDateFormat("yyyy-MM-dd").parse(time+"-01"); dd.setTime(d); dd.add(Calendar.MONTH, interval); } if(time.length() == 10){ Date d = new SimpleDateFormat("yyyy-MM-dd").parse(time); dd.setTime(d); dd.add(Calendar.DATE, interval); } } catch (ParseException e){ e.printStackTrace(); } return dateStr(dd.getTime(), "yyyy-MM-dd"); } /** * 获取现在时间 * @Param timeformat 时间格式 * @return(String)格式自定义 */ public static String getCurrentTime(String timeformat){ Date time = new Date(); return dateStr(time, timeformat); } /** * 获取现在时间 * @Param timeformat 时间格式 * @return(Date)格式自定义 */ public static Date getCurrentTimetoDate(String timeformat) { try { Date date = new java.sql.Date(new Date().getTime()); String datestr = new SimpleDateFormat("yyyy-mm-dd").format(date); Date time = new SimpleDateFormat(timeformat).parse(datestr); return time; } catch (ParseException e){ e.printStackTrace(); return null; } } /** * 将"yyyy-MM-dd"转换为 格式自定义 * * @param date * @param timeformat * @return */ public static String dateToString(String date, String timeformat) { String Strtime = ""; try { if(date != null && !"".equals(date)) { Date parse = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date + " 00:00:00"); Strtime = new SimpleDateFormat(timeformat).format(parse); } } catch (ParseException e) { e.printStackTrace(); } return Strtime; } /** * 判断某天是否是该月的第一天 * @param date * @return */ public static boolean isFirstDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println(calendar.get(Calendar.MONTH)); return calendar.get(Calendar.DAY_OF_MONTH) == 1; } public static String getDate(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date dt = null; String reStr = null; try { dt = sdf.parse(DateUtils.dateStr(new Date(),"yyyy-MM-dd")); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.DAY_OF_MONTH, -3); Date dt1 = rightNow.getTime(); reStr = sdf.format(dt1); } catch (ParseException e) { e.printStackTrace(); } return reStr ; } /** * 根据月份得到当月天数 * @param date * @return * @throws ParseException */ public static int getDaysOfMonth(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdf.parse(date)); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 根据月份得到当月天数 * @param date * @return * @throws ParseException */ public static int getDaysOfMonth(Date date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } }