2013-03-11 77 views

回答

83

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

您转换为'DateTime'使用系统默认时区 - 您应该明确地说。而你*的转换使用时区需要一天的开始,这是一个奇怪的选择国际海事组织。 'DateTime'已经*知道*时区,所以想改变它是很奇怪的 - 从* Date *转换*到DateTime时指定区域更有意义。 – 2013-03-11 07:39:36

+2

感谢各位 – Time 2013-03-11 08:04:26

+0

'java.utiL。Date'实际上并不知道java.util.TimeZone。因此,如果你需要的话,你必须在一个单独的变量中得到'TimeZone',像这样:'TimeZone zone = dateTime.getZone()。toTimeZone();' – bowmore 2013-03-11 08:09:32

0

从Java日期转换到Joda时间:
将日期转换为需要指定的DateTime时区。
要从java.util Date转换为Joda Time of Date,只需将java.util Date和时区传递给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); 

转换从约达时间日期到Java日期:
对于相反的情况乔达日期时间有一个方法toDate()将返回java.util中的日期。

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

更多细节Visit Here

6

您还没有指定你感兴趣,其中约达时间内的类型,但:

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

无论Date也不Instant都涉及到不同时区,所以没有必要在这里指定一个。

它没有意义的转换从LocalDateTime/LocalDate/LocalTimeDate(或反之),因为这将取决于时间区被应用。

随着DateTime可以转换为一个Date没有指定时区,而是从Date转换为DateTime应指定的时区,否则将使用系统默认的时区。 (如果你真的的是,我会明确指定它说清楚,这是一个深思熟虑的选择。)

例如:

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

'LocalTime'确实有助于在交互时简化代码用'java.util.Date'和做测试的时候。谢谢。 – 2016-07-07 17:22:45

相关问题