public class DateUtil {
//锁对象
private static final Object lockObj = new Object();
//存放不同的日期模板格式的sdf的Map
private static Map<String,ThreadLocal<SimpleDateFormat>> sdfMap = new HashMap<String,ThreadLocal<SimpleDateFormat>>();
//缺省日期格式
public static final String DATE_DEFAULT_FORMAT = "yyyy-MM-dd";
//全日期格式
public static final String DATE_FULL_FORMAT = "yyyy-MM-dd HH:mm:ss";
//全日期格式无秒
public static final String DATE_NO_SS_FORMAT = "yyyy-MM-dd HH:mm";
/*
*时间转字符串
*/
public static String dateToString(Date date,String pattern) {
if (pattern == null || "".equals(pattern)) {
pattern = DATE_DEFAULT_FORMAT;
}
if (date != null) {
return getSimpleDateFormat(pattern).format(date);
} else {
return null;
}
}
public static String dateToString(Date date) {
return dateToString(date,null);
}
/*
*得到格式化对象
*/
public static SimpleDateFormat getSimpleDateFormat(final String pattern) {
ThreadLocal<SimpleDateFormat> t1 = sdfMap.get(pattern);
synchronized(lockObj) {
t1 = sdfMap.get(pattern);
if (t1 == null) {
t1 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(pattern);
}
};
sdfMap.put(pattern,t1);
}
return t1.get();
}
}
/*
*字符串转时间
*/
public static Date stringToDate(String date,String pattern) throws ParseException {
if (pattern == null || "".equals(pattern)) {
pattern = DATE_DEFAULT_FORMAT;
}
return getSimpleDateFormat(pattern).parse(date);
}
/*
*字符串转时间
*/
public static Date stringToDate(String date) {
Date result = null;
if (date == null) {
return null;
}
if (date.length() == DATE_DEFAULT_FORMAT.length()) {
try{
result = stringToDate(date,DATE_DEFAULT_FORMAT);
}
}
}
/*
*获取当天日期
*/
public static String getToday(String pattern) {
return dateToString(new Timestamp(System.currentTimeMillis()),pattern);
}
}
方法的参数使用final修饰含义:
主要分为两种情况:1.修饰基本数据类型;2.修饰引用类型。
修饰基本数据类型:
参数的值在方法体内是不能被修改的,即不能被重新赋值,否则编译不通过。
修饰引用数据类型:
参数变量所引用的对象是不能被改变的。
作为引用的拷贝,参数在方法体里面不能再引用新的对象,否则编译不通过。
final变量不可修改。
final方法不可覆盖。
final类不可继承。