package com.nationalelectric.greenH5.utils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class DateTimeHelper { public static String format(String timeLong, String defaut) { try { long tmpLong = Long.parseLong(timeLong); Date d = new Date(tmpLong); String timeStr = format(d, "yyyy-MM-dd HH:mm:ss"); return timeStr; } catch (Exception e) { return defaut; } } public static String getNowDate() { return format(new Date(), "yyyy-MM-dd HH:mm:ss"); } public static String getNowDate1() { return format(new Date(), "yyyy-MM-dd"); } public static String getNowDate2() { return format(new Date(), "yyyyMMdd"); } public static String getNowDay() { return format(new Date(), "yyyy-MM-dd"); } /** * 两个时间相差距离多少天多少小时多少分多少秒 * * @param str1 * 时间参数 1 格式:2016-06-22 18:21:20 * @param str2 * 时间参数 2 格式:2016-06-22 17:21:20 * @return String 返回值为:xx天xx小时xx分xx秒 */ public static String getDistanceTime(String str1, String str2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date one; Date two; long day = 0; long hour = 0; long min = 0; long sec = 0; long ms = 0; try { one = df.parse(str1); two = df.parse(str2); long time1 = one.getTime(); long time2 = two.getTime(); long diff; if (time1 < time2) { diff = time2 - time1; } else { diff = time1 - time2; } day = diff / (24 * 60 * 60 * 1000); hour = (diff / (60 * 60 * 1000) - day * 24); min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60); sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); // ms = (diff - day * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - // min * 60 * 1000 - sec * 1000); } catch (ParseException e) { e.printStackTrace(); } return hour + "小时" + min + "分" + sec + "秒"; } /** * smdate时间参数 String类型 YYYY-MM-dd bdate时间参数 String类型 YYYY-DD-dd * return返回整形Int数字类型,例如:1 可用于计算两个日期的相差天数 */ public static int daysBetween(String smdate, String bdate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(smdate)); long time1 = cal.getTimeInMillis(); cal.setTime(sdf.parse(bdate)); long time2 = cal.getTimeInMillis(); long between_days = (time2 - time1) / (1000 * 3600 * 24); return Integer.parseInt(String.valueOf(between_days)); } /** * 用于计算两个时间的大小,是否相等 beginTime参数:开始时间 endTime 参数:结束时间 开始时间 < 结束时间 :返回0 开始时间 > * 结束时间 :返回1 开始时间 = 结束时间 :返回2 */ public static int isDaySize(String beginTime, String endTime) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date bt = sdf.parse(beginTime); Date et = sdf.parse(endTime); if (!bt.before(et) && !bt.after(et)) { return 2; } if (bt.before(et)) { return 0; } else { return 1; } } public static String getNowDateZH() { return format(new Date(), "yyyy年MM月dd日"); } public static String getNowDateHMS() { return format(new Date(), "yyyyMMddHHmmss"); } public static String getNowDateHM() { return format(new Date(), "yyyyMMddHHmm"); } public static String format(Date d, String f) { SimpleDateFormat sdf = new SimpleDateFormat(f, Locale.US); return sdf.format(d); } public static boolean isToday(String datetime) { String todayStr = format(new Date(), "yyyy-MM-dd"); if (datetime.contains(todayStr)) { return true; } return false; } public static String getNowDateyms() { return format(new Date(), "yyyy-MM-dd HH:mm:ss"); } /** * 获取当前时间的天 * * @return */ public static String getNowCurrentDay() { return format(new Date(), "dd"); } /** * 获取当前时间的年份 * * @return */ public static String getNowYear() { return format(new Date(), "yyyy"); } /** * 获取当前时间的年月 * * @return */ public static String getNowYearMonth() { return format(new Date(), "yyyyMM"); } /** * 获取当前月份 * * @return */ public static String getNowMonths() { return format(new Date(), "MM"); } /** * 获取当前时间的日 * * @return */ public static String getDay() { return format(new Date(), "dd"); } // 返回的是字符串型的时间,输入的 // 是String day, int x public static String addDateMinut(String day, int x) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 24小时制 // 引号里面个格式也可以是 HH:mm:ss或者HH:mm等等,很随意的,不过在主函数调用时,要和输入的变 // 量day格式一致 Date date = null; try { date = format.parse(day); } catch (Exception ex) { ex.printStackTrace(); } if (date == null) return ""; System.out.println("front:" + format.format(date)); // 显示输入的日期 Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE, x);// 24小时制 date = cal.getTime(); System.out.println("after:" + format.format(date)); // 显示更新后的日期 cal = null; return format.format(date); } /** * 获取当前时间戳 * * @return */ public static String getStamp() { int temp = (int) (System.currentTimeMillis() / 1000); return temp + ""; } /** * 获取本周为今年的第几周 * * @return */ public static String getWeek(){ Calendar calendar = Calendar.getInstance(); return String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR)); } /** * 日期解析为时间戳 * * @param dateString * @param format * @return Long * @description * @author cwchen * @date 2024/3/16 15:11 */ public static Long convertDateStringToTimestamp(String dateString, String format){ Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(dateString); } catch (ParseException e) { return null; } return date.getTime(); } }