一次 SimpleDateFormat 引发的惨案(5)
- UID
- 1066743
|
一次 SimpleDateFormat 引发的惨案(5)
方法三:
public class DateUtil {
private static Logger logger = Logger.getLogger(DataTool.class);
private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
private static ThreadLocal<DateFormat> threadLocal2 = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
}
};
public static String CCTToUTC(String timeString) {
try {
Date date = parse(timeString);
Calendar calendar = Calendar.getInstance();
Date tgtDate = new Date(date.getTime() - calendar.getTimeZone().getRawOffset());
return formatDate(tgtDate);
} catch (Exception e) {
logger.warn(timeString + " parse err", e);
return formatDate(new Date());
}
}
private static Date parse(String dateStr) throws ParseException {
return threadLocal.get().parse(dateStr);
}
private static String formatDate(Date date) throws ParseException {
return threadLocal2.get().format(date);
}
}
复制代码
方法四:抛弃JDK,使用其他类库中的时间格式化类:
使用 Apache commons 里的 FastDateFormat,“官宣”是既快又线程安全的 SimpleDateFormat, 可惜它只能对日期进行format(), 不能对日期串进行parse()
使用 Joda-Time 类库
其中,方法一和二,简单好用,推荐;方法三性能更优。 |
|
|
|
|
|