java中GMT解析的意外结果

发布于 2024-12-11 01:49:08 字数 432 浏览 0 评论 0原文

我使用下面的代码将字符串解析为日期 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 日星期三 09:00:00 EDT。但是,如果时间 =“20111019-12:59:59”,则 d 最终会成为星期二2011 年 10 月 18 日 20:59:59 EDT。怎么会这样?

I am using the code below to parse a String into a date GMT->EDT. I don't understand the results I am seeing.

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

If time = "20111019-13:00:00", then d ends up being Wed Oct 19 09:00:00 EDT 2011. However, if time = "20111019-12:59:59", d somehow ends up being Tue Oct 18 20:59:59 EDT 2011. How can this be?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶底世界 2024-12-18 01:49:08

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

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

Java 日期/时间 API 非常糟糕 - 如果可以的话,我强烈建议您转向 Joda Time< /a> 相反,您可以使用 DateTime,它确实有一个时区......并允许您在它们之间进行转换。

You meant HH:mm:ss for the time component, not hh:mm:ss. It was using the 12-hour clock, and interpreting 12:59:59 as effectively 00:59:59.

Note that your parsing does not perform a conversion to a particular time zone - because Date doesn't know about time zones. You're only seeing EDT because (I suspect) you're printing out d.toString(), which always uses the local time zone.

The Java date/time API is pretty awful - if you possibly can, I'd strongly advise you to move to Joda Time instead, where you would use a DateTime which does have a time zone... and lets you convert between them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文