首页 > 其他分享 >Joda Time : 处理时间问题

Joda Time : 处理时间问题

时间:2023-05-16 13:06:35浏览次数:34  
标签:Joda Java 处理 API Time Date 2013


更多的详细介绍: Joda-Time 简介 [url]http://h819.iteye.com/blog/611099[/url]

你觉得一个API设计得差到什么份上,才会把自己差不多的API全部Deprecated掉。java.util.Date便是这样的奇葩。因为它的API几乎都是反直觉的,几乎所有敢于用它的Java程序员都吃过它的亏。想初始化个2013年的第一天,还真不那么容易:

Date firstDayOf2013 = new Date(113, 0, 1);



如果你是个Java新手,你能猜出113是从哪来的吗?(好吧,它是2013-1900,至于为什么是1900,这真得问API的设计者了)。



Joda Time就是人们实在无法忍受这样东西的产物。同样的代码用Joda Time实现:


DateTime firstDayOf2013 = new DateTime().withDate(2013, 1, 1);



无论如何,你知道这能看出这些参数的含义了。不只如此,你还可以计算两天后是什么日子:


firstDate.plusDays(2);



日期格式化,也是JDK Date系列API里一大特色,你必须把代码写成下面这样:


new SimpleDateFormat("yyyy.MM.dd").format(firstDayOf2013)



作为一个初始化很慢的构造函数,你还必须每次调用,因为它不是线程安全的。同样的代码,在Joda Time里,我们可以用DateTimeFormatter:


DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy.MM.dd");

  ...

  formatter.print(dateTime);



请尽管放心大胆把formatter声明成一个字段,因为它是线程安全的。



当然,Joda Time的强大远不止于此。当然,JDK也并不是那么完全的自暴自弃,于是,有了一个JSR 310专门设计新的Date API。JSR 310的spec lead是Steven Colebourne,此人正是Joda Time的作者。不过,虽然JSR 310为我们描绘了Date的全新景象,但Java 8出来之前就先别打它的主意了,乖乖地用Joda Time吧。


标签:Joda,Java,处理,API,Time,Date,2013
From: https://blog.51cto.com/u_3871599/6283465

相关文章