4

是否有让 D3.js 解析包含毫秒的日期时间的解决方法?我不能让它工作:

var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%S").parse
parseDate("2011-01-01T12:14:35")
//that works

parseDate("2011-01-01T12:14:35.3456")
//returns null
4

3 回答 3

5

包含格式以解析使用 %L source的毫秒数。

对于您的情况:

var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%S").parse
parseDate("2011-01-01T12:14:35")    //that works

var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%S.%L").parse
parseDate("2011-01-01T12:14:35.345")    // works

请注意,您以毫秒为单位提供了 4 位数字,如果您处理的是毫秒,我认为这是不正确的。如果您真的有 4 位或 6 位(微秒)并且您只对毫秒感兴趣,您可以过滤掉最后几位。例如:

var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%S.%L000").parse
parseDate("2011-01-01T12:14:35.345000")    //that works
于 2014-08-29T09:17:57.827 回答
5

如果您的 dateTime 字符串已经采用该格式,则不需要 d3 将其解析为实际的日期对象。

例如:

new Date("2011-01-01T12:14:35")
# Sat Jan 01 2011 04:14:35 GMT-0800 (PST)

产生正确的日期对象。

于 2013-01-26T01:24:51.663 回答
3

尝试查看d3.time.format.isowiki 页面上显示的格式化函数:d3.time.format.iso

于 2013-01-25T21:54:05.357 回答