小编典典

日期值格式错误

java

我在解析我的代码中的平面文件后,试图转换DateTime作为文件存在于平面文件中的String 值Date

我已经写了代码来做到这一点,但是当我格式化日期时,它总是给我一个指定日期超过1天的日期,有时它会加5:30。

以下是该代码:

    DateFormat f = new SimpleDateFormat("EEE MMM dd HH:mm:ss zz yyyy");
    Date date = f.parse("Tue Aug 23 20:00:03 PDT 2011");
    System.out.println("---date----" + date);

上面的输出是

    ---date----Wed Aug 24 08:30:03 IST 2011

您能告诉我这里是什么问题吗?我在SimplaDateFormat课堂上使用的模式有问题吗?还是代码有问题?我已经为此挠了很久。


阅读 216

收藏
2020-11-26

共1个答案

小编典典

您的系统时区不同。输出显示IST-或印度标准时间,与PDT相差12.5h。该代码正在正确解析给定的日期(PDT(UTC -7))并打印出IST(UTC +
5h30)。

Java将日期存储为UTC日期。因此,当您解析PDT日期时,Java会将其转换为UTC并将其内部存储为UTC时间戳。在打印时,如果未指定时区,它将默认为系统时区,在您的情况下,该时区似乎是IST。

要指定确切的时区,请在SimpleDateFormat中指定它:

DateFormat f = new SimpleDateFormat("EEE MMM dd HH:mm:ss zz yyyy");
f.setTimeZone(TimeZone.getTimeZone("PDT"));
Date date = f.parse("Tue Aug 23 20:00:03 PDT 2011");
System.out.println("---date----" + f.format(date));
2020-11-26