- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文:
用户提供日期和时间,以及特定的 UTC 偏移量
1994-06-05T08:15:30-05:00
然后通过一些 Java 日期时间库传递,这些库确定这发生在夏令时,并有助于将一个小时添加到偏移量(如果时间戳不在夏令时,则不加修改地返回):
1994-06-05T08:15:30-04:00
(请注意,当天的时间 15:30
未更改)
最后,我在前端 (javascript) 收到了该字符串,我只需要显示与输入时完全相同的原始 UTC 偏移量,在本例中为 -05:00
。
我无法更改导致这一点的过程的任何部分,所以我唯一的选择是尝试对夏令时检测进行逆向工程,并在适当的时候减去一个小时的偏移量。
由于日期和时间保持不变,一个明显的解决方案是只检查如果日期和时间是夏令时,那么从偏移量中减去一小时
。对于大多数时间戳,这是可行的,但是在 DST 边界存在问题,因为例如,相同的时间戳可能会在 DST 生效当天的凌晨 1 点到凌晨 2 点出现两次。鉴于有关如何生成最终时间戳的信息,是否有任何方法可以用来消除 DST 边界处出现的部分或全部时间戳的歧义?
最佳答案
一些事情:
EST
是时区缩写,不是时区。时区将由其 IANA/TZDB 标识符标识,例如 America/New_York
。
一般来说,应避免使用时区缩写,因为:
它们可能是模棱两可的。例如,CST
可以是美国中部标准时间 (UTC-6)、古巴标准时间 (UTC-5) 或中国标准时间 (UTC+8)。
在世界的某些地方,它们与一个区域相关联,而不是与一个固定的偏移量相关联。例如,MSK
已经在俄罗斯莫斯科使用了很长时间。它目前表示 UTC+3,但在过去的几年中它表示 UTC+4。
并非所有人都同意使用缩写词。例如,夏威夷有时被称为HST
(夏威夷标准时间),有时被称为HAST
(夏威夷-阿留申标准时间)
并非世界上每个地方都使用英文缩写,甚至根本不使用其所在时区的缩写。尤其是当整个国家只有一个时区时。
您在后端说过您将 EST
映射到 -05:00
。这意味着您在某处定义了一个表映射时区缩写以进行偏移。您可能会发现该表非常固执己见,并且随着您的应用程序的维护而不断变化。我不建议这样做。
您说您还确定由于 DST,您增加了一个小时。认识到 DST 在世界各地的执行方式不同。如果您所拥有的只是与 UTC 的偏移量,则无法可靠地确定 DST 是否生效。此外,地球上至少有一个地方(澳大利亚豪勋爵岛)的夏令时时间为 30 分钟,而不是一个小时。不要做任何假设。
假设您指的是美国东部时区,在您指定的那一天,1994-11-05
,东部时间是美国东部时间 (UTC-5)。所以你的例子是错误的,因为你不会在这个日期转到 UTC-4。如果这样做,您的缩写无论如何都会更改为 EDT
- 而不是 EST
。
您不能从偏移量返回到时区或时区缩写,因为偏移量的使用方式不明确。
UTC-5 可以是EST
,也可以是ACT
、CDT
、COT
、CST
、EASST
、ECT
或 PET
。
UTC-4 可以是EDT
,也可以是AMT
、AST
、BOT
, CDT
, CLT
, COST
, ECT
, FKT
, GYT
、PYT
或 VET
。
即使您知道自己仅限于一个国家/地区,并且只有一个时差,但由于 DST 在某些地方的运作方式的性质,您也无法始终分辨出来自哪个时区。例如,美国的 2016-11-06T01:00:00-05:00
可能是 CDT
(America/Chicago
) ,或者可能是 EST
(America/New_York
)。两者同时生效。
请查看以下内容:
关于javascript - 如何猜测时间戳的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40899189/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!