【问题标题】:How do I convert this JSON datetime?如何转换此 JSON 日期时间?
【发布时间】:2011-06-02 22:52:50
【问题描述】:

以下字符串是从 JSON 格式的响应对象返回的,我想将其解析为有用的内容:/Date(1283457528340)/

如何使用 JavaScript 将其解析为用户友好的内容?

【问题讨论】:

  • 你能在那篇文章中提供其他有用的细节吗?那是Unix时间戳吗?它是 UTC 编码的,需要转换为本地时间吗?它真的以特定字符串/Date(...)/ 的形式返回,并且您需要解析出数字吗?

标签: javascript json parsing datetime


【解决方案1】:
function parseJsonDate(jsonDate) {
    var epochMillis = jsonDate;
    var d = new Date(parseInt(epochMillis.substr(6)));
    return d;
}

上面的代码将为您提供一个日期格式,该日期格式在给定视图中很有用。

传递给函数的参数 (jsonDate) 是您要转换的字符串,return d 行返回格式正确的日期。

只是另一种获取所需日期的方法。

【讨论】:

    【解决方案2】:

    这是自纪元以来的毫秒数。

    此函数从字符串中提取一个数字,并返回一个从该时间数字创建的 Date 对象。

    function dateFromStringWithTime(str) {
        var match;
        if (!(match = str.match(/\d+/))) {
            return false;
        }
        var date = new Date();
        date.setTime (match[0] - 0);
        return date;
    }
    

    例如,

    console.log(dateFromStringWithTime('/Date(1283457528340)/').toString());
    

    输出是:

    Fri Sep 03 2010 02:58:48 GMT+0700 (ICT)
    

    【讨论】:

    • 最好在 if 语句结果块周围保留大括号 ({}) 以保持绝对兼容性,尽管标准允许我们省略它们。
    【解决方案3】:

    视情况而定。该值代表什么?假设 UNIX 时间戳毫秒(否则调整),您可以提取该值,然后应用 parseInt 并用它构造一个新的 Date 对象。

    var str     = "/Date(1283457528340)/";
    var matches = str.match(/([0-9]+)/);
    var d       = parseInt(matches[0]);
    var obj     = new Date(d);
    

    然后您应该能够正常使用Date 对象。 这是未经测试的,可能有错别字/错误,但这个想法应该是合理的。

    编辑: matches[1] -> matches[0]

    【讨论】:

    • 另请注意,我没有在此处执行任何验证或错误处理。
    猜你喜欢
    • 2019-09-03
    • 2014-07-06
    • 2013-09-20
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多