+-

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import com.webex.mats.util.NumberUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DateUtils { private static Logger logger = LoggerFactory.getLogger(DateUtils.class); private static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss"; private static final String DEFAULT_ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; /** * * @param dateStr - long ms, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss'Z', yyyy-MM-dd'T'HH:mm:ss.SSS'Z' * @return */ public static Date string2DateU(String dateStr) { Date ret = null; if (StringUtils.isBlank(dateStr)) { return null; } if (NumberUtils.isNumber(dateStr)) { ret = new Date(NumberUtil.StringToLong(dateStr)); } else if (!dateStr.contains("T")) { ret = string2Date(dateStr); } else { if (!dateStr.contains(".")) { ret = string2Date(dateStr, "yyyy-MM-dd'T'HH:mm:ss'Z'"); } else { int indexDot = dateStr.indexOf("."); dateStr = dateStr.substring(0, indexDot + 4) + "Z"; ret = string2Date(dateStr, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); } } return ret; } public static Date string2Date(String dateStr) { return string2Date(dateStr, null); } public static Date string2Date(String dateStr, String pattern) { if (StringUtils.isBlank(pattern)) { pattern = DEFAULT_FORMAT; } DateFormat df = new SimpleDateFormat(pattern); Date ret = new Date(); try { ret = df.parse(dateStr); } catch (ParseException e) { logger.error(e.getMessage(), e); return ret; } return ret; } public static String date2String(Date date) { return date2String(date, null); } public static String date2ISOString(Date date) { return date2String(date, DEFAULT_ISO_FORMAT); } public static String date2String(Date date, String pattern) { if (null == date) { return null; } if (StringUtils.isBlank(pattern)) { pattern = DEFAULT_FORMAT; } DateFormat df = new SimpleDateFormat(pattern); String ret = df.format(date); return ret; } public static String dayStringOffset(String dayStr, int offset){ Date day = string2Date(dayStr + " 00:00:00"); Date result = new Date(day.getTime() + offset*24*60*60*1000); return date2String(result, "yyyy-MM-dd"); } public static Date dayString2Date(String dayStr){ return string2Date(dayStr+ " 00:00:00"); } public static long dayString2ts(String dayStr){ return string2Date(dayStr+ " 00:00:00").getTime(); } }