【发布时间】:2014-01-24 04:28:46
【问题描述】:
我使用 UTC 时区测试了 Joda DateTime 和 java.util.Date,我遇到了一个有趣的案例:
import org.joda.time.DateTime;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
public class Main {
public static void main(String[] args) throws ParseException {
String dt = "2011-06-11T12:00:00Z";
String format = "yyyy-MM-dd'T'hh:mm:ss'Z'";
DateFormat df = new SimpleDateFormat(format);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date d = df.parse(dt);
DateTime joda = new DateTime(dt);
// Output Sat Jun 11 05:00:00 PDT 2011
System.out.println(joda.toDate());
// Output Fri Jun 10 17:00:00 PDT 2011
System.out.println(d);
}
}
我想知道这对其中一个人来说是一个错误还是我在这里错过了一些重要的事情?
【问题讨论】:
-
您仅将 UTC 时区设置为“d”变量,即 java.util.Date。也为 Joda DateTime "joda" 变量设置时区。
-
顺便说一下,您的 DateTime 正在获取默认时区。如果您想要 UTC/GMT(或任何特定时区),请传递
DateTimeZone对象。对于 UTC/GMT,有一个 predefined constant "UTC"。像这样:DateTime dateTime = new DateTime( "2011-06-11T12:00:00Z", DateTimeZone.UTC );
标签: java date datetime jodatime