Java时间日期获取工具


/*
 * 系统名称: ARES 应用快速开发企业套件
 * 模块名称: 
 * 类 名 称: DatetimeUtil.java
 * 软件版权: ******股份有限公司
 * 相关文档:
 * 修改记录:
 * 修改日期      修改人员                     修改说明
* ======== ====== ============================================ * * ======== ====== ============================================ * 评审记录: * * 评审人员: * 评审日期: * 发现问题: */ package com.hundsun.jresplus.trace.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 功能说明: 时间日期获取工具
* 系统版本: v1.0
* 开发人员: xujin@hudnsun.com
* 开发时间: 2017-07-31
*/ public class DatetimeUtil { /** 锁对象 */ private static final Object lockObj = new Object(); /** 存放不同的日期模板格式的sdf的Map */ private static Map> sdfMap = new HashMap>(); /** * 返回一个ThreadLocal的sdf,每个线程只会new一次sdf * * @param pattern * @return */ private static SimpleDateFormat getSdf(final String pattern) { ThreadLocal tl = sdfMap.get(pattern); // 此处的双重判断和同步是为了防止sdfMap这个单例被多次put重复的sdf if (tl == null) { synchronized (lockObj) { tl = sdfMap.get(pattern); if (tl == null) { // 这里是关键,使用ThreadLocal替代原来直接new SimpleDateFormat tl = new ThreadLocal() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat(pattern); } }; sdfMap.put(pattern, tl); } } } return tl.get(); } /** * @param date * @param pattern * @return */ public static String format(Date date, String pattern) { return getSdf(pattern).format(date); } public static Date parse(String dateStr, String pattern) throws ParseException { return getSdf(pattern).parse(dateStr); } /** * 获取当前时间(字符串格式) */ public static String getNowTimestamp() { return format(new Date(System.currentTimeMillis()),"yyyy-MM-dd HH:mm:ss:SSS"); } }