【发布时间】:2019-01-23 19:52:04
【问题描述】:
如何在 Chart.JS 的数据点标签中格式化日期?
我试过了:
this.chart = new Chart(ctx,
{
data: {
labels: timestamps
.map(t => t.toLocaleString([], { month: '2-digit', day: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' })),
datasets: [
{
data: measurements
},
//etc...
]}});
它有效,但我收到一条 Moment.JS 警告消息:
弃用警告:提供的值不是公认的 RFC2822 或 ISO 格式...不鼓励使用非 RFC2822/ISO 日期格式,并将在即将发布的主要版本中删除。
由于我使用的方法显然不鼓励使用,因此是否有适当的方法来格式化 Chart.JS 中数据标签的日期?
与labels: timestamps
与labels: timestamps.map(t => t.toLocaleString(...)
【问题讨论】:
-
您收到的警告是关于原始日期字符串值的样子。我认为您发布的代码不会这样做,因为其中没有 Moment 调用。
-
chart.js 使用 MomentJS 的日期格式规范。根据他们的documentation:“在提供时间尺度数据时,Chart.js 支持 Moment.js 接受的所有格式。”
-
如果我将标签更改为不包含
.map(...),警告就会消失。 -
对,但首先
timestamps数组是什么?它从何而来?内容的类型是什么;它们是字符串还是 Date 实例? -
timestamps是Date[]。它由timestamps = this.dataPoints.map(x => x.timeStampDt);填充。而measurements由measurements = this.dataPoints.map(x => x.measurement)填充
标签: javascript chart.js