日期:2014-05-19 浏览次数:20796 次
import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 线程安全的SimpleDateFormat帮助类<br/> * 创建SimpleDateFormat对象成本较高,但是SimpleDateFormat又不是线程安全的,因此使用ThreadLocal模式<br/> * * @author xujsh(xjs250@163.com) * * */ public class DateFormatUtil { public static final String PATTERN10 = "yyyy-MM-dd"; public static final String PATTERN19 = "yyyy-MM-dd HH:mm:ss"; private static final ThreadLocal<Map<String,SimpleDateFormat>> DATE_FORMAT_HOLDER = new ThreadLocal<Map<String,SimpleDateFormat>>(){ @Override protected Map<String, SimpleDateFormat> initialValue() { Map<String, SimpleDateFormat> map = new HashMap<String, SimpleDateFormat>(); map.put(PATTERN10, new SimpleDateFormat(PATTERN10)); map.put(PATTERN19, new SimpleDateFormat(PATTERN19)); return map; } }; private DateFormatUtil(){ //私有的构造函数 } /** * 获取符合pattern格式的SimpleDateFormat对象<br/> * 如果pattern格式的SimpleDateFormat对象不存在,会创建并缓存之<br/> * * @param pattern * @return * */ public static SimpleDateFormat getDateFormat(String pattern){ Map<String, SimpleDateFormat> map = DATE_FORMAT_HOLDER.get(); SimpleDateFormat sdf = map.get(pattern); if(sdf == null){ sdf = new SimpleDateFormat(pattern); map.put(pattern, sdf); } return sdf; } /** * 获取yyyy-MM-dd格式的SimpleDateFormat对象 * * @return * */ public static SimpleDateFormat getDateFormat10(){ return getDateFormat(PATTERN10); } /** * 获取yyyy-MM-dd HH:mm:ss格式的SimpleDateFormat对象 * * @return * */ public static SimpleDateFormat getDateFormat19(){ return getDateFormat(PATTERN19); } /** * 把日期格式化成yyyy-MM-dd字符串 * * @param date * @return * */ public static String format10(Date date){ if(date == null){ return ""; } return getDateFormat10().format(date); } /** * 把日期格式化成yyyy-MM-dd HH:mm:ss字符串 * * @param date * @return * */ public static String format19(Date date){ if(date == null){ return ""; } return getDateFormat19().format(date); } /** * 把yyyy-MM-dd格式的字符串转化成日期 * * @param datestr * @return * */ public static Date parse10(String datestr){ if(datestr == null || datestr.length()!=10){ return null; } try{ return getDateFormat10().parse(datestr); }catch(Exception e){ return null; } } /** * 把yyyy-MM-dd HH:mm:ss格式的字符串转化成日期 * * @param datestr * @return * */ public static Date parse19(String datestr){ if(datestr == null || datestr.length() != 19){ return null; } try{ return getDateFormat19().parse(datestr); }catch(Exception e){ return null; } } }