【问题标题】:JSON.stringify returns wrong value for the Date ObjectJSON.stringify 返回日期对象的错误值
【发布时间】:2017-02-13 04:46:00
【问题描述】:

下面的代码提前一天返回,

var myJSON = JSON.stringify(new Date("02/02/1997"));
alert(myJSON);

myJSON 变量返回“1997-02-01T18:30:00.000Z

为什么它返回错误的值。

这里,“T18:30:00.000Z”是什么意思

有没有其他方法可以将 Date 对象转换为字符串。

【问题讨论】:

标签: javascript json date


【解决方案1】:

试试这个..

    var myJSON = JSON.stringify(new Date("02/02/1997").toLocaleString());
    alert(myJSON);

【讨论】:

  • 即使解析字符串产生正确的日期(这是有问题的),toLocaleString 的结果完全依赖于实现,并且可能无法正确解析一个主机产生的字符串由另一个人。
【解决方案2】:

它将您的 Date 对象转换为 UTC 日期。

您应该使用日期对象的预定义方法将日期对象转换为字符串值。喜欢:

JSON.stringify(new Date("02/02/1997").toLocaleString());

JSON.stringify(new Date("02/02/1997").toDateString()); // to get date portion

【讨论】:

  • 不,不要那样做。解析像“02/02/1997”这样的字符串不是一个好主意。此外,toLocaleString 的结果完全依赖于实现,一个主机创建的字符串可能无法被另一个主机解析。
【解决方案3】:

推荐你看看moment.js。该框架提供了一个非常好的 API:

在 JavaScript 中解析、验证、操作和显示日期。

将您的日期转换为所需的字符串格式,然后JSON.stringify

【讨论】:

  • 我认为建议库不适合回答有关 JavaScript 标准库的问题
  • 鉴于 JavaScript 日期处理的无穷乐趣,我想把它放到讨论中。对不起,静电。
  • 我完全同意 moment.js 很棒,只是它与 JavaScript 标准库的工作方式无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 2018-06-20
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多