我在解析我的代码中的平面文件后,试图转换DateTime作为文件存在于平面文件中的String 值Date。
DateTime
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课堂上使用的模式有问题吗?还是代码有问题?我已经为此挠了很久。
SimplaDateFormat
您的系统时区不同。输出显示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));