将时间字符串转换为日期对象javascript

时间:2017-06-25 04:46:32

标签: javascript arrays datetime d3.js

我试图通过引用来绘制D3时间序列: http://mcaule.github.io/d3-timeseries/

以此格式显示日期:'新日期(' 2013-01-01')

现在,我有以下数组:

            var data =[{
                "time": "2017-06-23T23:37:20-07:00",
                "value": 25.189767114257663
            },
            {
                "time": "2017-06-23T23:37:30-07:00",
                "value": 24.637318860009692
            },
            {
                "time": "2017-06-23T23:37:40-07:00",
                 "value": 24.896462306379043
            },
            {
                "time": "2017-06-23T23:37:50-07:00",
                "value": 24.348000192323468
            }]

我需要将此数组作为d3 timeseries函数的输入。但我无法绘制任何内容,因为上面的时间不是Date对象。如何将该时间字符串追加或转换为日期对象。因为我绝对需要有新的Date事件,否则该函数根本不会执行。

我尝试使用以下方法将时间转换为日期对象:

data.map(function(ele) {
ele.time = new Date(ele.time);
});

所以,这个东西一直附加着Zone。当我试图将这个数组作为d3函数的输入时,它不起作用。

1 个答案:

答案 0 :(得分:1)

您可以通过迭代数据并指定一个名为date的新字段,将时间戳映射到日期对象。

data.forEach(function(elem, index, arr) {
  arr[index]['date'] = new Date(
    arr[index]['timestamp'].split('T')[0]);
});

非常基本的字符串拆分,可能有更优雅的解决方案,但这是一个开始。