如何将Joda-Time DateTime转换为java.util.Date,反之亦然?
有没有可能做到这一点? 如果是的话,我怎样才能从乔达时间转换为date ,反之亦然?
将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();
您尚未指定您对Joda Time感兴趣的types,但是:
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
转换为Date
,您应指定时区,否则将使用系统默认时区。 (如果你确实需要的话,我会明确指出这是一个故意的select。)
例如:
DateTimeZone zone = DateTimeZone.forID("Europe/London"); Date date = ...; DateTime dateTime = new DateTime(date.getTime(), zone);
从Javadate转换到Joda时间date:
将date转换为需要指定的DateTime时区。
要从java.util Date转换为Joda Time的date,您只需将java.utildate和时区传递给Joda Time of Date的构造函数即可。
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时间转换为Javadate:
对于相反的情况Joda DateTime有一个方法toDate()
,它将返回java.utildate。
DateTime jodaDate = new DateTime(); java.util.Date date = jodaDate.toDate();
欲了解更多详情请访问此处