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

标签 javascript java date localdate

<分区>

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

我和我的团队最近发现,当使用 java 的 LocalDate 并以默认字符串格式 "YYYY-MM-DD" 将其发送回前端时,Javascript 会自动创建一个日期,假设字符串是 UTC,所以住在 ET 区,它会自动减去 -5 小时。

很烦人,但我们明白了。

但是,当我们将其作为 "YYYY-MM-DDThh:mm:ss" 随时间发回时,它会将其解析为本地日期。好吧,很奇怪……但它变得更奇怪了。

现在奇怪的是,如果我们发送的字符串在日期上没有 0 填充,如 "YYYY-MM-D" 它会将其解析为本地日期。 为什么?

这是一个例子:

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)

这是为什么???

最佳答案

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

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

Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies. Support for RFC 2822 format strings is by convention only. Support for ISO 8601 formats differs in that date-only strings (e.g. "1970-01-01") are treated as UTC, not local.

关于javascript - 为什么 JS 假设没有时间的字符串日期是 UTC,如果填充 0,如果不填充,则为本地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53542484/

相关文章:

javascript - jscript if 用于全局变量

javascript - Polymer - 为 DIV 设置动画

java - 将构造函数导出到 FreeMarker 数据模型中

Java - 检查java文件是否写得好

javascript - 利用时刻舍入到下一个或第三个星期一

mysql - Pentaho DI - 表输入错误 "couldn' t 从结果集中获取行”

javascript - 如何检查两个对象数组是否具有相同的属性值?

javascript - JS/Ruby AES 256 对称性

Java - 如何用txt文件的某些部分填充组合框

c - 在 .txt 文件中查找今天的日期并打印行?