zoukankan      html  css  js  c++  java
  • Java时间日期获取工具

    /*
     * 系统名称: ARES 应用快速开发企业套件
     * 模块名称: 
     * 类 名 称: DatetimeUtil.java
     * 软件版权: ******股份有限公司
     * 相关文档:
     * 修改记录:
     * 修改日期      修改人员                     修改说明<BR>
     * ========     ======  ============================================
     *   
     * ========     ======  ============================================
     * 评审记录:
     * 
     * 评审人员:
     * 评审日期:
     * 发现问题:
     */
    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;
    
    /**
     * 功能说明: 时间日期获取工具<br>
     * 系统版本: v1.0<br>
     * 开发人员: xujin@hudnsun.com<br>
     * 开发时间: 2017-07-31<br>
     */
    public class DatetimeUtil {
    	/** 锁对象 */
    	private static final Object lockObj = new Object();
    
    	/** 存放不同的日期模板格式的sdf的Map */
    	private static Map<String, ThreadLocal<SimpleDateFormat>> sdfMap = new HashMap<String, ThreadLocal<SimpleDateFormat>>();
    
    	/**
    	 * 返回一个ThreadLocal的sdf,每个线程只会new一次sdf
    	 * 
    	 * @param pattern
    	 * @return
    	 */
    	private static SimpleDateFormat getSdf(final String pattern) {
    		ThreadLocal<SimpleDateFormat> tl = sdfMap.get(pattern);
    
    		// 此处的双重判断和同步是为了防止sdfMap这个单例被多次put重复的sdf
    		if (tl == null) {
    			synchronized (lockObj) {
    				tl = sdfMap.get(pattern);
    				if (tl == null) {
    					// 这里是关键,使用ThreadLocal<SimpleDateFormat>替代原来直接new SimpleDateFormat
    					tl = new ThreadLocal<SimpleDateFormat>() {
    						@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");
    	}
    
    }
  • 相关阅读:
    Cygwin配置总结
    javap 指令集
    超好用的Vim配置
    超过 130 个你需要了解的 vim 命令
    21、面向对象
    20、MySQLdb
    深入java字符串原理及其效率分析
    数据库执行计划
    SQL中EXISTS的用法
    mybatis之foreach用法
  • 原文地址:https://www.cnblogs.com/w1440199392/p/15723691.html
Copyright © 2011-2022 走看看