//
//在调用DateUtils.formatDate 会出现日期误差
org.apache.http.client.utils.DateUtils.formatDate()
//原因是DateFormatHolder.formatFor(pattern);
public static String formatDate(final Date date, final String pattern) {
Args.notNull(date, "Date");
Args.notNull(pattern, "Pattern");
final SimpleDateFormat formatter = DateFormatHolder.formatFor(pattern);
return formatter.format(date);
}
//TimeZone.getTimeZone("GMT");这个是世界标准时间,所以我们调用DateUtils.formatDate()
//时区编码设置的是GMT会到时formatDate有误差,北京时间是GMT+8。
public static SimpleDateFormat formatFor(final String pattern) {
final SoftReference<Map<String, SimpleDateFormat>> ref = THREADLOCAL_FORMATS.get();
Map<String, SimpleDateFormat> formats = ref == null ? null : ref.get();
if (formats == null) {
formats = new HashMap<String, SimpleDateFormat>();
THREADLOCAL_FORMATS.set(
new SoftReference<Map<String, SimpleDateFormat>>(formats));
}
SimpleDateFormat format = formats.get(pattern);
if (format == null) {
format = new SimpleDateFormat(pattern, Locale.US);
format.setTimeZone(TimeZone.getTimeZone("GMT"));
formats.put(pattern, format);
}
return format;
}
发现这个问题之后我使用的是: DateFormatUtils.format() 本篇文章仅供参考,欢迎大佬一同探讨。如有错误希望大家能够指出。