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

Python时间戳转ISO格式逻辑迁移到Java时出现解析错误如何解决

问题根因

  • 存在无效的格式转换流程:你将时间戳转成Date对象后,使用默认SimpleDateFormat输出的是本地化格式的字符串(例如报错信息里的7/23/21 11:40 AM),该格式和DateTimeFormatter.ISO_LOCAL_DATE_TIME要求的标准ISO格式完全不匹配,因此抛出解析异常。
  • 时间戳转换精度错误:(long) 1627065646.444 * 1000会先把小数部分截断再乘1000,丢失毫秒精度。
  • API混用逻辑冗余:同时使用了已过时的Date、Timestamp类和Java 8+推荐的java.time新时间API,增加了不必要的转换步骤。

正确实现(和Python代码逻辑对齐,输出秒精度ISO格式时间)

直接通过java.time包完成转换,不需要来回格式化再解析:

// 从JSON获取的原始时间值
double jsonTime = 1627065646.444;
// 取秒级时间戳,和Python timespec='seconds'参数效果对齐
long epochSecond = (long) jsonTime;
// 转换为UTC时区的ISO格式字符串
String formattedTimeStamp = Instant.ofEpochSecond(epochSecond)
        .atOffset(ZoneOffset.UTC)
        .format(DateTimeFormatter.ISO_INSTANT);

如果需要保留毫秒精度,调整代码即可:

double jsonTime = 1627065646.444;
long epochMilli = (long) (jsonTime * 1000);
String formattedTimeStamp = Instant.ofEpochMilli(epochMilli)
        .atOffset(ZoneOffset.UTC)
        .format(DateTimeFormatter.ISO_INSTANT);

注意:如果原Python代码的fromtimestamp使用的是本地时区而非UTC,将ZoneOffset.UTC替换为对应时区即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:45:03