通用日期格式化工具类DateUtil

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类不可继承。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值