从java.util.date转换为JodaTime

Krt*_*lta 249 java datetime jodatime

我想将转换java.util.DateJodaTime以开展日期之间的减法.是否有一个很好的简洁方式转换DateJodaTime

ska*_*man 477

java.util.Date date = ...
DateTime dateTime = new DateTime(date);
Run Code Online (Sandbox Code Playgroud)

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

  • +1表示"否则它就像新的DateTime() - 我真的不喜欢它." (119认同)
  • 所以基本上:`DateTime dateTime = date == null?null:new DateTime(date);` (9认同)
  • 请注意,Java Date与TimeZone无关,而Joda DateTime则具有年表. (4认同)
  • 通常最好指定时区而不是依赖隐式默认值。如果省略时区,JVM 的默认时区将分配给新的 DateTime 对象。我建议这个… `DateTime dateTime = new DateTime( date, DateTimeZone.forID( "Europe/Paris" ) );`。或者,对于 UTC,请使用常量... `DateTime dateTime = new DateTime( date, DateTimeZone.UTC );` (2认同)

Hea*_*hen 13

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

每个datetime类都提供了各种构造函数.这些包括Object构造函数.这允许您从以下对象构造DateTime:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
Run Code Online (Sandbox Code Playgroud)

  • @skaffman如果你想避免空日期,你可以使用date.getTime()代替.您将获得一个空指针异常,但这可能比默默地失败更好. (16认同)
  • 我想知道他们为什么不为这些对象重载他们的构造函数. (2认同)
  • @PieterDeBie - 因为该系统是通用的。您可以注册自己的对象类型以进行相互转换。 (2认同)