chart.js - 在 Chart.js 中使用 utcoffset 时遇到问题
问题描述
我正在尝试使用带有日期时间 x 轴的 Chart.js,我需要通过减去 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 年。是的,两千零一。( 2001 年 1 月 10 日 10:00)注意时间实际上并没有改变(所以有两个错误:1.时间没有调整,应该调整。2:年调整不应该)。为什么会这样?
解决方案
我假设您想将其回滚 5 小时的原因是由于时区差异。如果是这种情况,您应该使用moment-timezone
而不是moment
.
话虽如此,从当前日期减去 5 小时实际上比你正在做的更简单。
在将日期输入 之前moment
,您需要将其转换为 js Date 对象,如下所示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})
}
推荐阅读
- sql - 同一张表中的 SQL DATE 比较
- postgresql - Postgres 不断拒绝 Patroni 连接尝试
- encoding - 这是什么类型的编码?
- neo4j - 如何使用 neo4j Cypher 查询创建直方图输出?
- c++ - 如何在 g++ 中打印 __int128
- git - 删除不必要的 .keep 文件
- elixir - Elixir SFTP 无法在服务器上运行 - 密钥交换失败
- .net - 接受 .NET CORE 中的 URL 参数
- mongodb - Percona Mongodb Exporter 的自定义端口
- r - curl::curl_fetch_memory(url, handle = handle) :无法识别的内容编码类型。libcurl 理解 deflate、gzip 内容编码