我在使用时间格式时遇到问题。如您所见,我从给定的分钟数到小时数进行计算。现在,我需要将前一天的时间“添加”到这些分钟/小时,并用天和HH:mm进行适当的轴标注,例如:对于startime var starttime = new Date('2020-03-12T11:00 :00')我愿意增加时间来获取第二天的新日期,因为我最多会增加24小时!我不知道该怎么做。 Actuallay,您可以总结与向日期对象添加小时和分钟有关的问题,如果添加24h,则很可能会给您第二天的问题!
因此,从下面的图表中,您可以获得例如11:20。我想将开始时间Date('2020-03-12T11:00:00')添加到这一小时中,以获取当天的22点(我认为是晚上10点)或23h的我要获取第二天的上午10点:日期('2020-03-13T10:00:00')
var ctx = document.getElementById('myChart');
var HourLabels = [];
MinLables = [54, 83, 155, 192, 206, 238, 285, 307, 335, 367, 431, 444, 495, 548, 604, 651, 680, 721, 777, 789, 859, 936, 980, 1004, 1047, 1089, 1122, 1135, 1200, 1245, 1323, 1381, 1396]
function parseMinToHours(x) {
MINUTES = x;
var m = MINUTES % 60;
var h = (MINUTES - m) / 60;
var HHMM = h.toString() + ":" + (m < 10 ? "0" : "") + m.toString();
return HHMM;
};
function getHoursLabels() {
for (var i = 0; i < MinLables.length; i++) // not <=, only < !!!
HourLabels.push(parseMinToHours(MinLables[i]));
};
getHoursLabels();
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: HourLabels,
datasets: [{
label: "Messwert",
xAxisID: 'xAxis0',
data: [196.0, 222.0, 251.0, 272, 258, 298, 293, 235, 269, 226, 223, 242, 246, 290, 267, 261, 285, 274, 243, 200, 197, 203, 219, 269, 238, 268, 271, 280, 252, 266, 282, 296, 289, 300, 291],
lineTension: 0,
fill: false,
borderColor: 'orange',
backgroundColor: 'transparent',
borderDash: [5, 5],
pointBorderColor: 'orange',
pointBackgroundColor: 'rgba(255,150,0,0.5)',
pointRadius: 5,
pointHoverRadius: 10,
pointHitRadius: 30,
pointBorderWidth: 2,
pointStyle: 'rectRounded'
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
legend: {
display: true,
position: "left",
labels: {
fontColor: 'rgb(255, 99, 132)'
}
},
scales: {
xAxes: [{
id: 'xAxis0',
type: "time", // add this!
time: {
parser: 'H:m',
unit: 'hour',
stepSize: 1,
min: '00:00',
max: '23:59',
displayFormats: {
hour: 'H', // change to uppercase 'H'.
}
},
}],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
这很容易用moment.js实现,这是Chart.js期望的时间格式。
代码可以大大简化,如下例所示。
使用Chart.js time axis display format options控制标签的格式。
var ctx = document.getElementById('myChart');
var HourLabels = [];
var MinLables = [54, 83, 155, 192, 206, 238, 285, 307, 335, 367, 431, 444, 495, 548, 604, 651, 680, 721, 777, 789, 859, 936, 980, 1004, 1047, 1089, 1122, 1135, 1200, 1245, 1323, 1381, 1396]
for (let i = 0; i < MinLables.length; i++) {
let starttime = moment('2020-03-12T11:00:00');
starttime.add(MinLables[i], 'minutes');
HourLabels.push(starttime)
}
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: HourLabels,
datasets: [{
label: "Messwert",
xAxisID: 'xAxis0',
data: [196.0, 222.0, 251.0, 272, 258, 298, 293, 235, 269, 226, 223, 242, 246, 290, 267, 261, 285, 274, 243, 200, 197, 203, 219, 269, 238, 268, 271, 280, 252, 266, 282, 296, 289, 300, 291],
lineTension: 0,
fill: false,
borderColor: 'orange',
backgroundColor: 'transparent',
borderDash: [5, 5],
pointBorderColor: 'orange',
pointBackgroundColor: 'rgba(255,150,0,0.5)',
pointRadius: 5,
pointHoverRadius: 10,
pointHitRadius: 30,
pointBorderWidth: 2,
pointStyle: 'rectRounded'
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
legend: {
display: true,
position: "left",
labels: {
fontColor: 'rgb(255, 99, 132)'
}
},
scales: {
xAxes: [{
id: 'xAxis0',
type: "time",
time: {
unit: 'hour',
stepSize: 1,
displayFormats: {
hour: 'H',
}
},
}],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<canvas id="myChart"></canvas>