d3.js时间解析毫秒不起作用?

时间:2013-01-25 21:46:43

标签: javascript datetime d3.js

是否有解决方法让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

3 个答案:

答案 0 :(得分:5)

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

例如:

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

会产生正确的日期对象。

答案 1 :(得分:3)

尝试查看维基页面上显示的d3.time.format.iso格式化功能:d3.time.format.iso

答案 2 :(得分:2)

包含格式以解析使用%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