2013-04-17 51 views
0

设置在日期字段时区,我使用JodaTime2库创建日期对象与给定的时区为:如何使用jodatime库

import org.joda.time.DateTime; 
import org.joda.time.DateTimeZone; 

DateTimeZone tz = DateTimeZone.forID("America/New_York"); 
System.out.println("timezone=" + tz); 
Date d = new DateTime(2013, 1, 1, 0, 0, tz).toDate(); 
System.out.println("Cur Date = " + d); 

然而,当我打印此日期,报告的时区是CST。我错过了什么?

timezone=America/New_York 
Cur Date = Tue Jan 01 13:00:00 CST 2013 

回答

2

您正在打印出Date对象的值。 Date不是时区 - Date.toString()总是只使用“默认”时区。 A Date只是自Unix纪元以来的毫秒数;它不知道日历或时区。

您应该坚持在Joda时间世界中,或者(如果您必须)使用SimpleDateFormatterDate转换为String - 您可以在格式器上设置时区。

+0

谢谢@Jon Skeet – lava