使用D3js将C#中的日期解析为javascript

时间:2014-04-10 08:53:54

标签: c# javascript json d3.js

我试图解析一个c#DateTime对象,从我的控制器以Json的形式返回到适当的javascript日期格式,以输入到D3js。

在我的控制器中,我现在返回一些随机值:

[HttpGet]
public ActionResult DataBlob()
{
    var list = new List<object>();
    var rnd = new Random();
    var start = DateTime.Now.AddDays(-30);
    var range = (DateTime.Today - start).Days;

    for (int i = 0; i < 10; i++)
    {
        list.Add(new TrendData
        {
            Depth = rnd.Next(i, 100),
            Id = i,
            Speed = rnd.Next(i, 100),
            Time = start.AddDays(rnd.Next(range)),
            Weight = rnd.Next(i, 100)
        });
    }

    return Json(list, JsonRequestBehavior.AllowGet);
}

在我看来,我有d3组件用d3.json(..)获取数据:

...
var parseDate = d3.time.format("%Y%m%d").parse;
...

d3.json('@Url.Action("DataBlob", "Trend")', function (error, data) {
    color.domain(d3.keys(data[0]).filter(function (key) { return key !== "Time"; }));

    data.forEach(function (d) {
        console.log("Before: " + new Date(parseInt(d.Time.substr(6))));
        tmp = new Date(parseInt(d.Time.substr(6)));
        d.Time = parseDate(tmp);
        console.log("After: " + d.Time);
    });
}

这是我在json电话中给出的数组的快照: enter image description here

检查控制台时,我在console.log语句中看到以下内容:

Before: Thu Mar 13 2014 10:53:17 GMT+0100 (W. Europe Standard Time)

后面是这个错误:

Uncaught TypeError: Object [object Date] has no method 'substring'

我希望有人可以帮我正确地解析这些日期,因为我似乎无法弄明白。

1 个答案:

答案 0 :(得分:0)

从此comment已经回答了它,

的结果
tmp = new Date(parseInt(d.Time.substr(6))); 

Date对象,它不需要进一步解析。你可能想要格式化,所以

var parseDate = d3.time.format("%Y%m%d")

根据documentation,您可能想要重命名该变量。