【发布时间】:2017-08-09 11:10:03
【问题描述】:
我有一个 .Net Core 应用程序,我在其中绘制了一个图表,显示了一天中某些测量值的值。
我的“时间”对象是 Unix 时间,以毫秒为单位(例如 1502258405000)。我已设法将其手动转换为时间对象,如下所示:
var datetimes = $.map(data, function (value, index) {
var datetime = new Date(value.timestamp);
var iso = datetime.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
return iso[2]; //Returns HH:MM:SS
});
但是,通过这种转换,我的 chart.js 图表无法将时间对象理解为时间,这意味着(如果测量中存在差距)它不会显示(并且存在),因为它只会显示测量值彼此相邻并将它们作为字符串处理。
我对显示日期不感兴趣,因为数据总是会在已知日期内收集。我将上面的实现更改为:
var datetimes = $.map(gpsData, function (value, index) {
return new Date(value.timestamp);
});
但是,当我在我的 chart.js 折线图上绘制它时,它会使我的图表显示不需要的 AM/PM 值,如上所示。我想要一个 24 小时制的时钟。我使用xAxis 的chart.js 时间值如下图所示绘制上图所示的值:
options: {
scales: {
xAxes: [{
type: 'time',
time: {
format: "HH:MM:SS",
min: minTime, //calculated above in my implementation
max: maxTime //same as above
}
}]
}
}
但是,这些值未格式化为我想要的输出。所以我想知道使用 chart.js 将 time of day 添加到我的图表上的 x 轴的正确方法是什么,甚至如何将其格式化为我想要的值?
【问题讨论】:
-
您是否尝试过此解决方案来格式化您的日期? stackoverflow.com/questions/37061945/…
-
是的。我能想到的所有组合都与该解决方案相结合。问题似乎是 Chart.js 经过大量研究后不支持 24 小时制。我在他们的文档中找不到任何其他说明。
-
你能给我一个jsfiddle吗?也许您必须手动编写 xAxis
-
我会继续这样做的。
-
或者你可以试试这个来自定义你的带有刻度功能的 xAxis,我只是从其他 ppl 的 Demo 中做一个简单的改变,祝你好运。 jsfiddle.net/prfd1m8q/999
标签: javascript datetime time chart.js axis-labels