繁体   English   中英

用Java中的GMT解析得到意外结果

[英]unexpected results with GMT parsing in java

我正在使用下面的代码将字符串解析为日期GMT-> EDT。 我不明白我看到的结果。

        SimpleDateFormat dformat = new SimpleDateFormat("yyyyMMdd-hh:mm:ss");
        TimeZone gmt = TimeZone.getTimeZone("GMT");
        dformat.setTimeZone(gmt);
        Date d = dformat.parse(time);

如果时间=“ 20111019-13:00:00”,则d以2011年10月19日星期三EDT结尾。但是,如果时间=“ 20111019-12:59:59”,则d以某种方式结束美国东部时间2011年10月18日20:59:59。这怎么可能?

您将HH:mm:ss表示为时间部分,而不是hh:mm:ss 它使用12小时制,并将12:59:59解释为有效的00:59:59。

请注意,您解析执行转换到一个特定的时间段-因为Date 不知道时区 您只看到EDT,因为(我怀疑)您正在打印d.toString() ,该代码始终使用本地时区。

Java的日期/时间API是相当可怕的-如果你能有可能,我会强烈建议你移动到约达时间代替,在这里你可以使用一个DateTime里面确实有一个时区......,让你它们之间的转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM