gpt4 book ai didi

java - 了解特定的 UTC 时间格式 YYYY-MM-DDTHH :MM:SS. SSSZ

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:25 25 4
gpt4 key购买 nike

我有两个相关的问题。

假设在 BST 中运行的程序以 UTC YYYY-MM-DDTHH:MM:SS.SSSZ 格式生成当前时间的日期时间值

同时假设伦敦的当前时间是 2016-06-01 12:33:54

  1. 如果程序给出的当前时间是 2016-06-01T11:33:54.000Z ,是不是程序出错了?

  2. 如何在 YYYY-MM-DDTHH:MM:SS.SSSZ 的相应时间格式中记录 BST 的夏季偏移

我假设 YYYY-MM-DDTHH:MM:SS+0001 我是对的吗?

最佳答案

首先请阅读iso8601信息。处理不同时区(例如服务器时区和客户端时区)的时间变得越来越普遍,这个标准非常有用。

请特别阅读有关 UTC 或“祖鲁”时间的信息 here .

  1. 程序是正确的,因为在夏季伦敦时间比“UTC”时间早一小时

  2. 尾随的“Z”是 UTC(祖鲁语)的简称。您也可以写“+00:00”而不是“Z”。 SS.SSS 指的是秒和毫秒——与时区无关。在 devnull 的评论中,他向您展示了如何为夏季应用偏移量。

编辑:

关于iso8601 timezone是否包含timezone,timezone是否会被打印出来,评论中有一些讨论。

这完全取决于日期/时间的实现。如果我们使用 SimpleDateFormat,则支持时区并将打印。

这里有一个代码示例来说明

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(formatter.format(new Date()));
formatter.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println(formatter.format(new Date()));

输出

2016-06-02T12:53:14.924Z
2016-06-02T13:53:14.925+01:00

当然,如果您使用不同的日期/时间库,例如 joda-time,那么实现细节会有所不同。

编辑:正如@DerrylThomas 指出的那样,SimpleDateFormat 多年来使用小写字母 y 是明智的 - 除非它打算使用周年 -在类似问题的另一个答案中详细解释了一点 https://stackoverflow.com/a/56911450 .

关于java - 了解特定的 UTC 时间格式 YYYY-MM-DDTHH :MM:SS. SSSZ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com