gpt4 book ai didi

忽略时区偏移量的 Javascript 日期时间字符串(实验)

转载 作者:行者123 更新时间:2023-11-30 09:58:14 27 4
gpt4 key购买 nike

我最糟糕的噩梦是日期对象,所以我创建了一个 fiddle 来查看它是如何工作的,并尝试为以下格式的 date strings 找到解决方案 2015-10- 05T11:49:13.587Z 但要注意当前时区。

基本上,我希望能够编写 new Date()(或类似的)并获取 2015-10-05T09:49:13.587Z 而不是 2015-10-05T11:49:13.587Z

似乎显示正确日期/时间的唯一方法是:

  • moment().format()
  • new Date().toLocaleString()
  • moment().toLocaleString()
  • moment().format().toLocaleString()

但是它们都没有像我想要的那样返回一个日期对象。那么正确的处理方法是什么?

请检查我的测试: http://codepen.io/Frondor/pen/PPmYpv

最佳答案

Basically, I want to be able to write new Date() (or similar) and get 2015-10-05T09:49:13.587Z instead of 2015-10-05T11:49:13.587Z.

您要的值是两个小时前。这样转换是无效的。

我认为您混淆了两个截然不同的事情:

  • UTC 不是一种格式。这是一个计时系统。当我们说“在 UTC 中”时,我们的意思是时间值以世界时间呈现 - 全世界都一样,并且与 GMT(不考虑夏令时的英格兰格林威治时间)大致相同。如果您的本地时间比 UTC 晚两个小时,那么 UTC 比您的本地时间早两个小时。

  • ISO-8601 格式是日期和时间的字符串表示形式。有多种形式,您所表达的是 时间戳扩展格式。换句话说,它表示事件发生的实际时刻,根据日期、时间和与 UTC 的关系。

    在此格式中,Z 具体表示“此处显示的值已经采用 UTC 格式”。它与使用 +00:00 大致相同。

因此,如果作为 ISO8601 字符串的 UTC 值是 2015-10-05T11:49:13.587Z,那么相应的本地值(假设你所说的 UTC-2)是 2015-10-05T09:49:13.587-02:00。这仍然是 ISO8601 格式,但不再是 UTC。

最简单的方法是使用 moment.js,使用 moment().format()

关于忽略时区偏移量的 Javascript 日期时间字符串(实验),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950369/

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