73

有可能这样做吗?如果是,那么我如何进行从Joda-TimeDate的转换,反之亦然?

4

3 回答 3

114

要将JavaDate转换为JodaDateTime:-

Date date = new Date();
DateTime dateTime = new DateTime(date);

反之亦然:-

Date dateNew = dateTime.toDate();

如果需要,使用TimeZone:-

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone);
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate();
于 2013-03-11T07:33:48.180 回答
6

您尚未指定您感兴趣的 Joda Time 中的哪种类型,但是:

Instant instant = ...;
Date date = instant.toDate();
instant = new Instant(date);
// Or...
instant = new Instant(date.getTime());

两者都与时区Date无关Instant,因此无需在此处指定。

LocalDateTime从/ LocalDate/转换LocalTimeDate(反之亦然)是没有意义的,因为这取决于所应用的时区。

withDateTime你可以不指定时区转换a Date,但是要转换DateDateTime你应该指定时区,否则它将使用系统默认时区。(如果您真的想要,我会明确指定它以明确表示这是一个深思熟虑的选择。)

例如:

DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);
于 2013-03-11T07:36:17.427 回答
1

将 Java 日期转换为 Joda 日期时间:
需要指定从日期转换为 DateTime 时区。
要将 java.util 日期转换为 Joda 日期时间,您只需将 java.util 日期和时区传递给 Joda 日期时间的构造函数。

java.util.Date date = new java.util.Date(System.currentTimeMillis());
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone.
DateTime dateTime = new DateTime(date.getTime(), dtz);

从 Joda 日期时间转换为 Java 日期:
对于相反的情况,Joda DateTime 有一个方法toDate()将返回 java.util 日期。

DateTime jodaDate = new DateTime();
java.util.Date date = jodaDate.toDate();

欲了解更多详情,请访问这里

于 2013-03-11T07:36:05.997 回答