我有一些日期时间字符串,例如
"2017-10-29T02:54:03.125983+00:00"
"2017-10-29T02:09:22.1453833+00:00"
有6或7位数字长度毫秒,如何用d3 javascript语言将其解析为日期对象?我试过了
d3.timeParse("%Y-%m-%dT%H:%M:%S.%LZ");
但失败了,它返回null
答案 0 :(得分:2)
你所拥有的不是长毫秒 ✻:这是微秒。
自D3 v4以来,D3中有一个指示符为微秒(参见here)。要解析微秒,请使用"f"
。根据API:
%f - 微秒作为十进制数[000000,999999]。
以下是使用您的字符串的演示(请勿查看Stack代码段控制台,点击"运行代码段"然后打开浏览器控制台查看实际日期):
var date = "2017-10-29T02:54:03.125983+00:00";
var parser = d3.timeParse("%Y-%m-%dT%H:%M:%S.%f%Z");
console.log(parser(date))

<script src="https://d3js.org/d3-time-format.v2.min.js"></script>
&#13;
三项意见:
"f"
将不使用默认包。您必须参考独立时间微库(请查看我上面的演示以查看URL)。让我们证明一下:
var date = "2017-10-29T02:09:22.145383+00:00";
var parser = d3.timeParse("%Y-%m-%dT%H:%M:%S.%f%Z");
console.log(parser(date))
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
&#13;
"Z"
。它应该是"%Z"
。正如API所说,&#34;请注意,此处的文字Z与时区偏移指令%Z&#34; ; ✻标题编辑。
答案 1 :(得分:-1)
您正在尝试解析不正确的日期对象,我想您要格式化日期对象。
而不是:
d3.timeParse("%Y-%m-%dT%H:%M:%S.%LZ");
试试这个:
d3.timeFormat("%Y-%m-%dT%H:%M:%S.%LZ");