【问题标题】:How to format JSON date?如何格式化 JSON 日期?
【发布时间】:2012-02-20 15:05:12
【问题描述】:

所以,我需要这种格式的 JSON 日期格式

“9/30/2010 12:00:00 AM”,格式为 MM/DD/YYYY HH:MM:SSDD/MM/YYYY,所以我不需要有关小时、分钟和秒的信息,我需要从 json 中替换月份和日期,我尝试了一些不同的方法,但总是失败

我需要使用 jQuery

我也没有找到格式化此日期类型的任何答案,我发现的只是这样格式化日期:/Date(1224043200000)/

所以有人知道吗?

【问题讨论】:

  • 没有 JSON 日期。你想要一个 JavaScript Date 对象吗?
  • 什么是/Date(1224043200000)/
  • 没有“JSON日期”之类的东西,意思是JSON没有日期的数据类型。
  • @Rocket 这看起来像是 ASP.NET AJAX 框架对 Date 对象的典型字符串序列化。
  • 我知道没有 JSON 日期格式,我想要的只是与 JSON 字符串不同的格式:P

标签: javascript jquery json datetime-format


【解决方案1】:

您可以像这样从字符串创建日期对象:

var myDate = new Date(dateString);

那么您可以随心所欲地对其进行操作,获得所需输出的一种方法是:

var output = myDate.getDate() + "\\" +  (myDate.getMonth()+1) + "\\" + myDate.getFullYear();

您可以在elated.com article "working with dates"找到更多信息

【讨论】:

  • 您需要转义字符串中的斜线。 + "\\" +.
  • 此解决方案不正确。 getMonth() 是从零开始的,所以一月份返回 0,所以你需要 +1
  • @Alex Marshall 已修复,谢谢!
  • 日期使用正斜杠,而不是反斜杠
【解决方案2】:

不幸的是,您的“来自”日期格式在 JavaScript 中不是独立于实现的。所有其他格式都取决于实现,这意味着即使大多数实现都可以理解这种格式,我/您不能确定例如如何解析 DD 和 MM 顺序(我几乎可以肯定它会取决于当地的区域设置)。因此,我建议使用第 3 方(或您的手写)日期解析器从您的输入字符串中获取 Date 对象。您可以在这里找到一个这样的解析器: http://www.mattkruse.com/javascript/date/

因为您的问题对我来说不是 100% 清楚,所以您的日期可能是 /Date(number)/ 格式,这表明您正在从 jQuery 代码调用 ASP.Net 服务。在这种情况下,在 JSON 解析期间,您可以将其转换为 Date 对象:

data = JSON.parse(data, function (key, value) {
    // parsing MS serialized DateTime strings
    if (key == '[NAME_OF_DATE_PROPERTY_IN_THE_JSON_STRING]') {
        return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
        // maybe new Date(parseInt(value.substr(6))) also works and it's simpler
    }
    return value;
});

【讨论】:

    【解决方案3】:

    下面的代码解决了我的问题:

    var date = new Date(parseInt(d.data[i].dtOrderDate.replace("/Date(", "").replace(")/", ""), 10));
    var day = date.getDate();
    var monthIndex = date.getMonth();
    var year = date.getFullYear();
    

    【讨论】:

      【解决方案4】:

      试试这样的:

      var date = new Date(parseInt(jsonDate.substr(6))); 
      

      其中 jsonDate 是存储日期的变量

      【讨论】:

      • 您应该将基础添加到parseIntparseInt(x, 10)
      • 我想你会注意到 OP 希望从 MM/DD/YYYY HH:MM:SS 格式的日期字符串中获取日期,而不是 /Date(ticks)/ 格式。
      • substr 对我不好,cos substr 只是剪切了字符串的其余部分,所以它会在第7个字符之后全部剪切,但有时字符数一直不一样,cos日期格式可以像这样:2012 年 1 月 2 日(8 个字符),有时可能是 2011 年 10 月 31 日(10 个字符)
      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 2015-05-18
      • 2021-12-15
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多