• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Javascript和Java Date JSON序列化

date 51次浏览

我有一个带有日期属性的javascript对象,该属性已使用JSON.stringify转换为JSON

我在格林尼治标准时间+4时区(俄罗斯/莫斯科)

例如,5 Jan 2012转换为2012-01-04T20:00:00.000Z5 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())。 (请注意,这使用毫秒。)
  • JavaScript可以很容易地从中构建日期(例如new Date(1000 * 1326894706))。 (请注意,这使用毫秒。)
  • 如果很重要,它(在JSON序列化中的数据大小方面)总是会比"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")之类的东西)。


    版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
    喜欢 (0)