我有一个带有日期属性的javascript对象,该属性已使用JSON.stringify
转换为JSON
我在格林尼治标准时间+4时区(俄罗斯/莫斯科)
例如,5 Jan 2012
转换为2012-01-04T20:00:00.000Z
5 Jan 1975
转换为1975-01-04T20:00:00.000Z
但是在1975年,它是GMT + 3时区,因为俄罗斯在2011年取消了夏令时。因此,当涉及到服务器(java)时,它将反序列化为:2012-01-04T20:00:00.000Z
变成5 Jan 2012 00:00
-确定1975-01-04T20:00:00.000Z
变成4 Jan 1975
23:00-错误!
在Javascript中将Date对象转换为JSON的推荐方法是什么?
解决方案如下:
我建议使用日期符号前后的秒数传递日期/时间,更具体地说,是使用Unix Epoch(1970年1月1日00:00 GMT)以来的秒数。如果您对此不熟悉,请在此处找到示例转换器:http://www.epochconverter.com/
这有一些优点:
java.util.Date
中唯一不被弃用的构造函数(不带params的构造函数除外),另请参见(也包括getTime()
)。 (请注意,这使用毫秒。)new Date(1000 * 1326894706)
)。 (请注意,这使用毫秒。)"yyyy-MM-dd HH:mm:ss"
中的任何一个都要小。 { "datetime": 1326894706, "tz": "GMT" }
仍然比{ "datetime": "18 Jan 2012 13:51:46 GMT" }
短。 考虑到在Java和JavaScript中从中轻松获取
Date
实例,然后可以使用
DateFormatter
在Java中将其转换为文本。对于JavaScript,使用诸如
Date Format之类的库将帮助您在页面上适当地呈现它(例如,使用诸如
new Date(val * 1000).format("yyyy-mm-dd HH:MM")
之类的东西)。