如何配置FusionCharts时间格式以正确解析含秒的时间戳?
问题解决:图表时间戳解析错误显示1970年时间
核心问题
时间轴显示1970年的根源是schema中的日期格式字符串错误:
- 你用
%-m表示分钟,但该格式符实际用于解析月份;分钟的正确格式符是%M %I是12小时制小时,而你的数据用的是24小时制(如10:00),应改用%H
修正方案
1. 修正Schema的日期格式
针对你的时间戳格式2001-01-31 00:00:00.000,正确格式字符串如下:
let schema = [{ 'name': 'Time', 'type': 'date', 'format': '%Y-%m-%d %H:%M:%S.%L' },{ 'name': 'value1', 'type': 'number' }]
格式符说明:
%H:24小时制小时(00-23)%M:分钟(00-59)%S:秒(00-59)%L:毫秒(000-999)
如果数据存在不带毫秒的情况(如示例中的2023-11-28 10:00:00),可改用可选格式兼容两种情况:%Y-%m-%d %H:%M:%S%.%L
2. 直接传递Date对象(更可靠)
若格式解析仍有问题,可提前将时间字符串转为Date对象再传入:
// 预处理数据,转换时间格式 let processedData = data.map(item => { // 若为ASP.NET返回的UTC时间,需在字符串末尾加"Z"或用Date.UTC处理 return [new Date(item[0]), item[1]]; }); // 此时Schema可省略format配置 let schema = [{ 'name': 'Time', 'type': 'date' },{ 'name': 'value1', 'type': 'number' }]
3. 使用标准ISO 8601格式
将时间字符串改为2001-01-31T00:00:00.000Z(UTC)或2001-01-31T00:00:00.000+02:00(GMT+2时区),多数图表库可自动识别该格式,无需额外配置format。
验证要点
- 在控制台测试单个时间字符串的解析结果,比如执行
d3.timeParse("%Y-%m-%d %H:%M:%S.%L")("2023-11-28 10:00:00.000")(若基于D3类图表库),确认是否返回正确Date对象 - 检查ASP.NET返回的时间字符串是否带时区偏移,避免因时区差导致解析偏差
内容的提问来源于stack exchange,提问作者Andog
相关产品推荐
相关产品推荐

