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

Java如何将2024-01-01T00:00:00.000Z格式日期字符串转为long型毫秒值

Java 转换ISO 8601格式日期字符串为时间毫秒值方案

错误原因

你使用的SimpleDateFormat模式yyyy-MM-dd'T'HH:mm:ss.SSSZ中,Z是用来匹配+0800这类数字时区格式的占位符,但你的输入日期字符串末尾的Z是字面量,代表UTC时区,两者格式不匹配导致解析失败。

正确实现方案

方案1:使用SimpleDateFormat(兼容Java 8以前版本)

需要把模式中的Z标记为字面量,同时显式设置解析时区为UTC,避免本地时区偏移导致结果错误:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
// 必须设置时区为UTC,否则会按照本地时区解析出现误差
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
long res = sdf.parse(createdAt).getTime();

方案2:使用Java 8+ 新时间API(更推荐)

你输入的日期是标准ISO 8601格式,java.time.Instant类原生支持直接解析,且线程安全、代码更简洁:

long res = Instant.parse(createdAt).toEpochMilli();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:03