+-

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();
}
}