对DateFormat的操作之joda-time

采用的版本如下:

Java代码   收藏代码
  1. joda-time-2.1.jar

 

基于joda-time进行date format的操作代码如下:

		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(System.currentTimeMillis());
		String pattern = "yyyy-MM-dd hh:mm:ss";

		DateTime dateTime = new DateTime(calendar);
		String dateStr = dateTime.toString(pattern);
		LOGGER.info("dateStr:" + dateStr);

		DateTime date = DateTimeFormat.forPattern(pattern).parseDateTime(dateStr);
		LOGGER.info("date:" + date.toDate());

根据pattern创建DateTimeFormatter :

    public static DateTimeFormatter forPattern(String s)
    {
        return createFormatterForPattern(s);
    }

 具体的创建过程:

    private static DateTimeFormatter createFormatterForPattern(String s)
    {
        if(s == null || s.length() == 0)
            throw new IllegalArgumentException("Invalid pattern specification");
        DateTimeFormatter datetimeformatter = null;
        synchronized(cPatternedCache)
        {
            datetimeformatter = (DateTimeFormatter)cPatternedCache.get(s);
            if(datetimeformatter == null)
            {
                DateTimeFormatterBuilder datetimeformatterbuilder = new DateTimeFormatterBuilder();
                parsePatternTo(datetimeformatterbuilder, s);
                datetimeformatter = datetimeformatterbuilder.toFormatter();
                cPatternedCache.put(s, datetimeformatter);
            }
        }
        return datetimeformatter;
    }

 也就是先根据pattern从map中获取,如果没有的话那么build

那么我们看DateTimeFormatter是否线程安全的?

    private final DateTimePrinter iPrinter;
    private final DateTimeParser iParser;
    private final Locale iLocale;
    private final boolean iOffsetParsed;
    private final Chronology iChrono;
    private final DateTimeZone iZone;
    private final Integer iPivotYear;
    private final int iDefaultYear;
 没有static 符合线程安全条件,那么同样是线程安全的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值