【发布时间】:2012-10-21 10:14:51
【问题描述】:
我正在尝试使用 GMT 解析表示日期的字符串,但它会在我的 PC(太平洋)上的时区打印出来。当我运行以下命令时,我得到以下输出。关于如何让解析解析并返回 GMT 日期的任何想法?如果您看下面,我正在使用 format.setTimeZone(TimeZone.getTimeZone("GMT"));但它没有产生预期的结果。
以下代码的输出:
2012 年 10 月 29 日星期一 05:57:00 PDT
package javaapplication1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
public class JavaApplication1 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.parse("2012-10-29T12:57:00-0000"));
}
}
【问题讨论】:
-
-0000不一定表示 GMT。目前尚不完全清楚它表示什么或是否允许(根据the ISO 8601 standard)。这可能意味着与 UTC 的未定义偏移量。 GMT 将由Z或带有加号的+0000表示。 -
对于这个问题的新读者,我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的OffsetDateTime和DateTimeFormatter。
标签: java