在 Chart.js 中使用 utcoffset 时遇到问题

Trouble using utcoffset with Chart.js

我正在尝试将 Chart.js 与日期时间 x 轴一起使用,我需要通过减去 5 小时来调整我的所有值。这是我的一些代码:

var timeFormat = 'MM/DD HH:mm';

time: {
  format: timeFormat,
  tooltipFormat: 'll',
  parser: function(utcMoment) {
    return moment(utcMoment).utcOffset(5, true);
  }
},

没有解析器功能,我的值是正常的(2021 年 1 月 10 日 10:00),但是有了解析器功能,由于某种原因,我的值一直设置到 2001 年。是的,两千- and-one.(10:00, January 10, 2001) 注意时间实际上并没有改变(所以两个错误: 1.time 不应该调整。 2:years 不应该调整是)。为什么会这样?

我假设您想将其回滚 5 小时的原因是时区差异。如果是这种情况,您应该使用 moment-timezone 而不是 moment.

话虽如此,从当前日期减去 5 小时实际上比您正在做的要简单。

在将日期输入 moment 之前,您需要将其转换为 js 日期对象,如下所示:new Date('2021-01-10 00:00:00')。由于您的解析器函数接受 m/d H:M 格式的日期,因此您需要先将年份附加到它。

你的代码应该是这样的:

parser: function(utcMoment) {
    const new_date = utcMoment.split(' ')[0] + '/' + (new Date().getFullYear()) + ' ' + utcMoment.split(' ')[1];
    return moment(new Date(new_date)).subtract({hours: 5})
}