【问题标题】:javascript d3.js date string parsing issuejavascript d3.js 日期字符串解析问题
【发布时间】:2013-03-05 16:49:49
【问题描述】:

假设这是我的数据对象中的字符串

{ date: "2013-03-04 12:00:00+0000" }

var parseDate = d3.time.format("%Y-%m-%d_%H:%M:%S+%Z");

data.forEach(function(d) {
            d.date = parseDate(d.date);
        });

然而,在我的forEach 方法中,我的日期对象每次都返回 null。我不明白为什么会失败。

同样

{ date: "2013-03-04 00:00:00+0000" }

d3.time.format("%Y-%m-%d 00:00:00+00").parse

工作正常。但是日期不太精确,因为它假设在我的可视化中一切都发生在午夜

为什么我的字符串日期解析器在我的第一个场景中失败了?我尝试在 chrome 的控制台/检查元素中单步执行日期解析器,但无济于事。

这里是 d3.time.format 文件https://github.com/mbostock/d3/wiki/Time-Formatting

【问题讨论】:

  • 您可能不需要 [+%Z] 中的 [+]。试试 ["%Y-%m-%d_%H:%M:%S%Z"]
  • @Andrew 这也不起作用d3.time.format("%Y-%m-%d_%H:%M:%S%Z").parse

标签: javascript parsing date d3.js


【解决方案1】:

从您链接到的文档页面,进一步向下:

尚不支持解析以下指令:

%j - 一年中的一天。

%U - 一年中的周数。

%w - 工作日数。

%W - 一年中的周数。

%Z - 时区偏移量,如“-0700”。

%% - 文字“%”字符。

不支持您尝试解析的时区偏移量。第二个有效,因为您没有尝试解析它。

如果您对 GMT 格式的所有内容都满意,只需将格式规范中的 +%Z 替换为 +0000。否则,您将不得不寻找另一种解析日期的方法。

【讨论】:

  • 这不起作用d3.time.format("%Y-%m-%d_%H:%M:%S+0000").parse
  • 这行得通 d3.time.format("%Y-%m-%d %H:%M:%S+0000").parse 谢谢,经过大量试验和错误。文件表明 _ 是空格所必需的,但这是误导
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
相关资源
最近更新 更多