package com.nis.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.SimpleTimeZone; import java.util.TimeZone; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.log.Log; public class DateUtil { private static Log logger = Log.get(); public static Date getUTCTimeByConfigTimeZone() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(DateUtil.getConfigTimeZone(0)); String format = sdf.format(new Date()); Date parse = null; try { sdf.setTimeZone(TimeZone.getDefault()); parse = sdf.parse(format); } catch (Exception e) { logger.error(e); } return parse; } public static TimeZone getConfigTimeZone(int configTimeZone) { int newTime = configTimeZone * 60 * 60 * 1000; TimeZone timeZone; String[] ids = TimeZone.getAvailableIDs(newTime); if (ids.length == 0) { timeZone = TimeZone.getDefault(); } else { timeZone = new SimpleTimeZone(newTime, ids[0]); } return timeZone; } /** * 偏移秒数 * * @param date 日期 * @param offset 偏移秒数,正数向未来偏移,负数向历史偏移 * @return 偏移后的日期 */ public static DateTime offsetSecond(Date date, int offset) { return offset(date, DateField.SECOND, offset); } /** * 获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期 * * @param date 基准日期 * @param dateField 偏移的粒度大小(小时、天、月等){@link DateField} * @param offset 偏移量,正数为向后偏移,负数为向前偏移 * @return 偏移后的日期 */ public static DateTime offset(Date date, DateField dateField, int offset) { return dateNew(date).offset(dateField, offset); } /** * 根据已有{@link Date} 产生新的{@link DateTime}对象 * * @param date Date对象 * @return {@link DateTime}对象 * @since 4.3.1 */ public static DateTime dateNew(Date date) { return new DateTime(date); } }