import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 时间格式化工具
*
* @author sunweidong
*/
public class SimpleDateFormatUtil {
/** 同步锁 */
private static final Object syncLock = new Object();
/** 存储线程变量 */
static Map<String, ThreadLocal<SimpleDateFormat>> map = new HashMap<>();
/**
* 格式化时间
*
* @param pattern 格式
* @param date 时间
* @return <p>返回格式化后的时间<p>如果date为null,则返回""
*/
public static String format(String pattern, Date date) {
if (date == null) {
return "";
}
return getSimpleDateFormat(pattern).format(date);
}
private static SimpleDateFormat getSimpleDateFormat(final String pattern) {
ThreadLocal<SimpleDateFormat> threadLocal = map.get(pattern);
// 双重校验
if (threadLocal == null) {
synchronized (syncLock) {
if (threadLocal == null) {
threadLocal = ThreadLocal.withInitial(() -> new SimpleDateFormat(pattern));
map.put(pattern, threadLocal);
}
}
}
// 获取SimpleDateFormat
return threadLocal.get();
}
}