React Highcharts中如何将ISO日期字符串转为毫秒级时间戳
ISO日期转Highcharts毫秒时间戳实现方案
你拿到的2022-06-04T00:00:00.000Z是标准ISO 8601格式的UTC时间,用JS原生能力就能直接转成Highcharts datetime轴要求的毫秒级数值时间戳,不需要引入额外依赖。
- 单条日期转换:直接把ISO字符串传入Date构造函数,调用
getTime()方法即可得到目标格式时间戳
const isoDate = "2022-06-04T00:00:00.000Z"; // 输出结果为类似1654300800000的毫秒时间戳,可直接供Highcharts使用 const timeStamp = new Date(isoDate).getTime();
- 批量转换series数据:如果原始数据集的时间维度都是ISO字符串格式,直接遍历映射即可
// 原始数据示例,格式为[ISO日期, 指标值] const rawSeriesData = [ ["2022-06-04T00:00:00.000Z", 0.25], ["2022-06-04T04:00:00.000Z", 0.33], ["2022-06-04T08:00:00.000Z", 0.29] ]; // 转换为Highcharts兼容格式 const formattedData = rawSeriesData.map(item => [new Date(item[0]).getTime(), item[1]]);
另外你贴的现有配置里有两处语法错误,是复制时丢了乘号,直接运行会报错,修正后如下:
xAxis: { type: 'datetime', ordinal: false, startOnTick: false, endOnTick: false, minPadding: 0, maxPadding: 0, Date: false, tickInterval: 4 * 3600 * 1000, // 补全乘号,代表4小时的刻度间隔 minRange: 1 * 24 * 3600000, // 补全乘号,代表最小缩放范围为1天 dateTimeLabelFormats: { day: '%l %P', hour: '%l %P' }, offset: 0, }, series: [ { "data": formattedData, // 传入转换完成的数据即可 color: '#FFA749', }, ],
注意:原始日期字符串末尾的Z代表UTC零时区,该转换方法得到的时间戳不会带本地时区偏差,直接传入Highcharts即可按预期渲染,不需要额外做时区偏移计算。
内容的提问来源于stack exchange,提问作者Bhautik Bhalani
相关产品推荐
相关产品推荐

