You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

d3.timeParse解析UTC时间字符串转Date对象返回null如何解决

问题原因
  • 解析格式规则与待解析字符串结构不匹配:自定义的解析规则%Y-%m-%d %H:%M:%S.%LZ中,日期和时间段的分隔符设置为空格,但实际UTC时间字符串里日期和时间是用大写字符T分隔的,位置匹配失败直接导致解析返回null。
  • 小数秒位数匹配错误:格式规则中的%L指令仅能匹配3位长度的毫秒值,你提供的时间字符串里秒后的小数部分共7位(1620000),长度不匹配也会造成解析异常。
修复方案

你可以任选以下一种方式实现正确解析:

  • 方案1:直接使用d3内置的ISO 8601标准时间解析器,无需手动编写格式规则,天然适配你提供的标准UTC时间字符串,代码最简洁:
// 引入d3库后直接调用内置解析方法
var t1 = d3.isoParse("2022-06-20T19:00:00.1620000Z")
console.log("debug:", t1) // 输出正确的Date对象
  • 方案2:修正自定义解析规则,适配字符串格式:首先将格式串中日期和时间之间的空格替换为T,同时对原始字符串做预处理,将7位小数秒截断为3位毫秒值,再传入解析函数即可:
// 预处理:截断多余的小数秒精度,保留3位毫秒
const formatTimeStr = "2022-06-20T19:00:00.1620000Z".replace(/\.(\d{3})\d+Z$/, ".$1Z")
var t1 = d3.timeParse("%Y-%m-%dT%H:%M:%S.%LZ")(formatTimeStr)
console.log("debug:", t1)

内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:12:13