<分区>
这很奇怪,但我相信有一个完美的解释。
我和我的团队最近发现,当使用 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)
这是为什么???