【问题标题】:javascript JSON.parse wrong timestamp [duplicate]javascript JSON.parse错误的时间戳[重复]
【发布时间】:2014-10-24 18:24:51
【问题描述】:

“JSON.parse”解析时间戳不正确。

strObj='{"Timestamp":635450757182431418}';
console.log ('String object:'  + strObj ); //  Timestamp":635450757182431418
var parseObj= JSON.parse (strObj);
console.log (parseObj); // Timestamp: 635450757182431400

http://jsfiddle.net/kwakwak/rqb6gf4z/

解析前:635450757182431418, 解析后:635450757182431400

有什么问题? 谢谢!

【问题讨论】:

    标签: javascript json parsing timestamp


    【解决方案1】:

    635450757182431418 对于 JavaScript 格式数字 IEEE754 double precision 来说太大了,这意味着整数部分大约有 53 位。

    这个数字不能精确地表示为 JavaScript 数字,您应该使用不同的格式(字符串、数字数组、自定义)。

    如果你想得到一个字符串形式的时间戳,你可以这样做:

    var strTimestamp = strObj.match(/"Timestamp"\s*:\s*(\d+)/)[1];
    

    【讨论】:

    • 这个字符串是从哪里来的?你应该从源头上解决问题
    • Ajax - 无法更改源,如何解析为字符串而不是整数?
    【解决方案2】:

    当你有一个字符串 635450757182431418 时,值被存储,但作为一个数字它被四舍五入为 635450757182431400。

    只需在 chrome 控制台中输入此内容

    635450757182431418
    

    你会得到635450757182431400的结果,因为在JS中Number不支持大于635450757182431400。

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2017-02-19
      相关资源
      最近更新 更多