如何将Joda Time DateTime转换为java.util.Date,反之亦然?

如何将Joda Time DateTime转换为java.util.Date,反之亦然?,java,datetime,jodatime,java.util.date,Java,Datetime,Jodatime,Java.util.date,有可能吗?如果是,则如何从转换为,反之亦然?转换为:- 反之亦然:- Date dateNew = dateTime.toDate(); 时区为时,如果需要:- DateTime dateTimeNew = new DateTime(date.getTime(), timeZone); Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate(); 从Java日期转换为Joda日期时间: 要将日期转换为日期,需

有可能吗?如果是,则如何从转换为,反之亦然?

转换为:-

反之亦然:-

Date dateNew = dateTime.toDate();
时区为
时,如果需要:-

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone);
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate();

从Java日期转换为Joda日期时间:
要将日期转换为日期,需要指定时区。
要将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();

有关更多详细信息,您尚未在Joda Time内指定您感兴趣的类型,但:

Instant instant = ...;
Date date = instant.toDate();
instant = new Instant(date);
// Or...
instant = new Instant(date.getTime());
Date
Instant
都与时区无关,因此不需要在此处指定时区

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

使用
DateTime
可以在不指定时区的情况下转换为
Date
,但要从
Date
转换为
DateTime
则应指定时区,否则将使用系统默认时区。(如果你真的想这么做,我会明确说明这是一个深思熟虑的选择。)

例如:

DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);

你见过乔达吗?您认为有合适的时区吗?转换为
DateTime
使用系统默认时区-您应该明确地说。使用时区的转换从一天开始,在我看来这是一个奇怪的选择。
DateTime
已经知道了时区,因此,想要更改它是很奇怪的-当从
Date
转换为
DateTime
时,指定区域更有意义
java.utiL.Date
实际上并不知道
java.utiL.TimeZone
。因此,如果需要,您必须在单独的变量中获取
时区,如下所示:
TimeZone=dateTime.getZone().toTimeZone()
LocalTime
在与
java.util.Date
交互和进行测试时,确实有助于简化代码。谢谢
DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);