【发布时间】:2014-03-24 10:54:08
【问题描述】:
在我的页面上,用户输入生日。该模型将日期保存为 javascript 日期。在请求中,日期被转换为 UTC,并带有 给定日期的时区偏移量。在服务器端球衣读取该日期并添加当前时区偏移量。
所以在写这篇文章时会发生什么(服务器在 CET 中):
用户输入:
01/03/1967
客户转移:
JSON.stringify(new Date(1967,2,1))
"1967-02-28T23:00:00.000Z"
服务器增加一小时,并正确获取01/03/1967。
但是如果用户进入
01/04/1967
客户转移:
JSON.stringify(new Date(1967,3,1))
"1967-03-31T22:00:00.000Z"
服务器增加一小时,并错误地获取31/03/1967。夏令时涉及夏令时,服务器可能会增加两个小时,并且日期再次正确。
我现在只传输日期字符串(不是日期对象,所以只是用户输入的内容)。
其他人有这个问题吗?如何解决这种差异?
我没有从 JSON.stringify 中得到任何确定性行为,为什么它有时使用 2 小时的偏移量,为什么有时只使用 1 小时。
例如查看以下日期:
JSON.stringify(new Date(1981,5,1))
""1981-05-31T22:00:00.000Z""
JSON.stringify(new Date(1980,5,1))
""1980-05-31T23:00:00.000Z""
【问题讨论】:
标签: java javascript json date jersey