从java.util.date转换为JodaTime


249

我想将转换java.util.DateJodaTime以开展日期之间的减法。有没有一种很好的简洁方法可以将转换DateJodaTime

Answers:


478
java.util.Date date = ...
DateTime dateTime = new DateTime(date);

但是请确保date不是null,否则它的行为就像new DateTime()-我真的不喜欢那样。


9
所以基本上:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx

121
+1表示“否则,它的行为就像新的DateTime()-我真的不喜欢它。”
reevesy 2012年

1
@BabajidePrince否; 那么您将获得与新的DateTime(null)相同的值,这正是我们要避免的值。该表达式旨在将null保持为null,这在大多数情况下是有意义的。
Joeri Hendrickx

4
请注意,Joda DateTime具有按时间顺序排列时,Java Date是独立于TimeZone的。
Cristian Vrabie

1
是的,一两次,如果像新的DateTime()这样的null行为使我有些烦恼...
buzzsawddog13年

13

http://joda-time.sourceforge.net/quickstart.html

每个datetime类都提供各种构造函数。这些包括对象构造函数。例如,这允许您从以下对象构造DateTime:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class

16
@skaffman如果要避免使用空日期,可以改用date.getTime()。您将得到一个空指针异常,但是这可能比静默失败更好。
Heathen

2
我想知道为什么他们不只是为那些对象重载其构造函数。
Pieter De Bie 2015年

1
@PieterDeBie-因为系统是通用的。您可以注册自己的对象类型以进行转换。
Jules
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.