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

2022-08-31 13:29:26

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


答案 1

要将 Java Date 转换为 Joda DateTime:-

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();

答案 2

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

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

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

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

您可以使用转换为,而无需指定时区,但要从 转换为,您应该指定时区,否则它将使用系统默认时区。(如果你真的想要这样,我会明确地指定它,以明确这是一个深思熟虑的选择。DateTimeDateDateDateTime

例如:

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