我宁愿将我的JSON处理降到最低。我建议您将系列日期时间数据格式化为服务器上的纪元毫秒。当xAxis类型设置为datetime时,这似乎可以被highcharts接受。您可以使用此功能:
private long EpochTime(DateTime dt)
{
//long form code to be clear
TimeSpan t = dt - new DateTime(1970, 1, 1);
long millisecondsSinceEpoch = (long)t.TotalSeconds * 1000;
return millisecondsSinceEpoch ;
}
有上面这个帖子stovroz和wergeld等,更现代的选择。 在将被转换为客户端的JSON的对象中使用它。您需要返回一组日期/值的点。我使用这个类:
public class TimePointData
{
public long date { get; set; }
public decimal value { get; set; }
}
我使用这样一个SqlDataReader循环中:
while (reader2.Read())
{
DateTime dTest = Convert.ToDateTime(reader2["XData"]);
TimePointData newPoint = new TimePointData()
{
date = EpochTime(dTest) ,
value = Convert.ToDecimal(reader2["YData"])
};
Series.data.Add(newPoint);
}
在JavaScript中设置这样的选项:
xAxis: {
type: 'datetime',
labels: {
formatter: function() {
return moment(this.value).format("YYYY-MM-DD"); //format as you need to
}
},
title: {
text: 'Date'
}
},
series: [{
data: $scope.data.TimeSeriesData[0].data //whatever is correct for your data structure
}]
这在为我工作MVC项目使用webapi数据调用和angularjs代码在可缩放区域图表中创建高图形图形。当你这样做时,别忘了让你的舌头处于正确的位置:)
所以你的意思了'epoch'应该是'VAR划时代=新的日期时间(1970年,1,1,0,0,0,DateTimeKind.Utc).AddHours( 1)'? – AnhTriet
不,如果您正在调整时期,则为“AddHours(-1)”;如果您调整减去时期的结果,则为“AddHours(1)”。但是,再次,只有在出于某种原因需要匹配示例中的确切数字时,您才需要使用自己的数据来获取工作图表。 – stovroz
它的工作原理!我的时间是格林威治标准时间+7,所以我设置了“AddHours(-7)”。我必须仔细设置时间,以便xAxis可以正确显示以及“十字线”。非常感谢! – AnhTriet