比较从Rails到JavaScript的日期

Jmac代码

我正在研究一个项目的功能,该功能会根据记录的创建日期更改元素的颜色。我正在使用Rails后端和React前端。我正在尝试确保颜色与适当的日期匹配,而不是与前一天或之后匹配。

在Rails中,我有一条记录,其中created_at属性为"2020-07-29 17:38:00.437423"(PST)

在React中,同一条记录显示其created_at属性为"2020-07-29T17:38:00.437Z"

1。

new Date("2020-07-29 17:38:00.437423")
//=> Wed Jul 29 2020 17:38:00 GMT-0700 (Pacific Daylight Time)
new Date("2020-07-29T17:38:00.437Z")
//=> Wed Jul 29 2020 10:38:00 GMT-0700 (Pacific Daylight Time)

我注意到在第二个版本中删除“ Z”时,时间符合我的预期,但是为什么这些字符串返回的日期对象显示7个小时的差异?

最高

在浏览器中,当您创建一个没有任何时区信息的日期时,它实际上会假定其位于系统时区中:

new Date("2020-07-29 17:38:00.437423")
> Date Wed Jul 29 2020 17:38:00 GMT+0200 (Central European Summer Time)

就我而言,这GMT+0200是因为我在丹麦。哎呀

2020-07-29T17:38:00.437Z 实际上是带有时区名称的ISO8601时间戳,该名称的含糊不清。

如果时间以UTC为单位,请在时间后直接添加Z,且不带空格。Z是零UTC偏移量的区域标记。因此,“ 09:30 UTC”表示为“ 09:30Z”或“ 0930Z”。“ 14:45:15 UTC”将是“ 14:45:15Z”或“ 144515Z”。
ISO8601-维基百科

JavaScript的日期和时间处理非常糟糕。当Brendan Eich在浏览器大战中在10天内急于创建该语言时,他只是从Java中彻底删除了日期/时间对象,而浏览器供应商则创建了不同的(糟糕的)实现。结果是一团糟,仍然困扰着我们25年。

moment.js这样的多个库可以解决该语言的问题和不一致之处,以及缺少从一种TZ转换为另一种TZ或操纵日期的方法。

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

我真的会推荐Thoughtbot的出色文章“关于时间(Zones) ”作为后端的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript日期比较很奇怪

来自分类Dev

比较javascript日期对象

来自分类Dev

比较日期问题-JavaScript

来自分类Dev

比较javascript日期对象

来自分类Dev

比较日期问题-JavaScript

来自分类Dev

Rails日期到NSDate

来自分类Dev

使用Javascript进行日期比较

来自分类Dev

比较日期并创建计数javascript

来自分类Dev

使用JavaScript的日期比较错误

来自分类Dev

日期格式和比较Javascript

来自分类Dev

比较源到目标日期的最佳方法

来自分类Dev

比较Rails和JSON日期时间

来自分类Dev

Rails SQL 日期时间比较失败

来自分类Dev

比较从CSV导入到获取日期的日期

来自分类Dev

Javascript日期到SQL日期对象

来自分类Dev

比较Javascript和时区中的日期

来自分类Dev

本机javascript中的ISO日期比较

来自分类Dev

Javascript日期比较不符合预期

来自分类Dev

Javascript中的时区敏感日期比较

来自分类Dev

JavaScript-比较不同格式的日期

来自分类Dev

比较使用JavaScript和langs中的日期

来自分类Dev

用于日期时间组合比较的JavaScript验证

来自分类Dev

比较JavaScript中的两个日期

来自分类Dev

在javascript中比较日期:IE 8异常

来自分类Dev

本机javascript中的ISO日期比较

来自分类Dev

javascript中的日期比较不起作用

来自分类Dev

比较2日期与javascript

来自分类Dev

无法比较星期五的日期JavaScript

来自分类Dev

比较没有时区的JavaScript日期