为什么JS假设没有时间的字符串日期如果填充0则为UTC,如果不填充则为本地? [复制]

2024-04-21

这很奇怪,但我确信有一个完美的解释。

我和我的团队最近在使用时发现java 本地日期并以默认的字符串格式将其发送回前端“年-月-日”,Javascript会自动创建一个日期,假设字符串是UTC,因此生活在ET区,它会自动减去-5小时。

很烦人,但我们明白了。

然而,当我们把它随时间发回时“YYYY-MM-DDThh:mm:ss”,它将其解析为本地日期。好吧,很奇怪……但事情变得更奇怪了。

现在奇怪的部分是,如果我们发送日期上没有 0 填充的字符串,如下所示“年-月-日”它将其解析为本地日期。Why?

这是一个例子:

new Date("2017-12-09")
// output: Fri Dec 08 2017 19:00:00 GMT-0500 (Eastern Standard Time)
new Date("2017-12-9")
// output: Sat Dec 09 2017 00:00:00 GMT-0500 (Eastern Standard Time)

为什么是这样???


答案取决于您的浏览器实现。

See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Note:由于浏览器差异和不一致,强烈建议不要使用 Date 构造函数(和 Date.parse,它们是等效的)解析日期字符串。对 RFC 2822 格式字符串的支持只是按照惯例。对 ISO 8601 格式的支持不同,仅日期字符串(例如“1970-01-01”)被视为 UTC,而不是本地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么JS假设没有时间的字符串日期如果填充0则为UTC,如果不填充则为本地? [复制] 的相关文章

随机推荐