joda-time遇到的坑

第一篇Java博文,纪念一下,还想声明下:这是我遇到的坑,不代表其他人。

1、pattern解析

使用joda time遇到坑,做pattern解析时间:

        System.out.println(DateTime.parse("2015092408", DateTimeFormat.forPattern("yyyyMMddHH")).getMillis());
        System.out.println(DateTime.parse("2015092408", DateTime Format.forPattern("YYYYmmDDhh")).getMillis());

两段代码打印时间 不一样,第一个才是正确的解析,大师看到这里肯定会发笑:“yyyy”与“YYYY”不一样,确实是个很低级的错误,类似的linux下date命令规范,这里做个脑补,提醒自己pattern格式不能想当然:

             y:year(15)

             Y:year(2015)

             M:月份,(文本,数字)

             d:    day of month (数字)

             D: day of year (数字)

             a: 上午、下午(am pm)

             h: 小时(1-12)

             H: 小时(0-23)

             k: 小时(1-24)

             m:分钟(数字)

             s:秒(数字)

             S:毫秒(数字

             e:   day of week(数字)

             E:day of week(文本)

             w:  week of year (数字)

             z:timezone(文本)

             Z:timezone (time zone offset)

2、时区

     joda-time使用DateTimeZone表示时区:
    System.out.println(new DateTime(dateTime, DateTimeZone.forID("Asia/Tokyo")).toString());
    System.out.println(new DateTime(dateTime, DateTimeZone.forOffsetHours(9)).toString());

3、效率问题

    时间转换历来是个费时的事情,所以有两点建议:1、不要循环使用时间转换;2、如果避免不了1,尽量使用cache减少转换


参考链接:
http://rensanning.iteye.com/blog/1546652


你可能感兴趣的:(joda-time遇到的坑)