假设这是我数据对象中的字符串
{ 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中的console / inspect元素中单步执行日期解析器,但无济于事。
这里是d3.time.format文档https://github.com/mbostock/d3/wiki/Time-Formatting
答案 0 :(得分:4)
从您链接到的文档页面,进一步向下:
解析时尚不支持以下指令:
%j - 一年中的一天。
%U - 一年中的周数。
%w - 工作日编号。
%W - 一年中的周数。
%Z - 时区偏移,例如" -0700"。
%% - 文字"%"字符。
不支持您尝试解析的时区偏移量。第二个是有效的,因为你并没有试图解析它。
如果您对GMT中的所有内容都很满意,只需在格式规范中将+%Z
替换为+0000
即可。否则,您必须找到另一种解析日期的方法。