2

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

{ 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

4

1 回答 1

4

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

尚不支持解析以下指令:

%j - 一年中的一天。

%U - 一年中的周数。

%w - 工作日编号。

%W - 一年中的周数。

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

%% - 文字“%”字符。

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

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

于 2013-03-05T16:54:31.910 回答