[英]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.