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

如何将带偏移量的时间戳转换为UTC?(Java实现)

问题解决:带偏移量的时间戳转UTC时间

错误原因分析

你当前代码存在两个核心问题:

  1. 类型选择错误:LocalDate仅表示日期(年/月/日),不包含时间、毫秒和时区偏移信息,因此没有toInstant()方法。你的输入字符串包含完整的时间和偏移量,应当使用OffsetDateTime类型处理。
  2. 格式化器不匹配:DateTimeFormatter.BASIC_ISO_DATE对应格式为yyyyMMdd(如20191130),和你输入的2019-11-30T00:01:00.000-06:00完全不兼容。实际上你的输入是标准ISO_OFFSET_DATE_TIME格式,无需手动指定格式化器,API默认即可解析。

正确实现代码

方法一:直接转换UTC并格式化

String text = "2019-11-30T00:01:00.000-06:00";
// 解析带偏移量的日期时间
OffsetDateTime offsetDateTime = OffsetDateTime.parse(text);
// 转换为UTC时区的日期时间
OffsetDateTime utcDateTime = offsetDateTime.withOffsetSameInstant(ZoneOffset.UTC);
// 输出目标格式
System.out.println(utcDateTime.format(DateTimeFormatter.ISO_INSTANT));

方法二:通过Instant转换

String text = "2019-11-30T00:01:00.000-06:00";
OffsetDateTime offsetDateTime = OffsetDateTime.parse(text);
// 转换为Instant(本质为UTC时间)
Instant instant = offsetDateTime.toInstant();
// 格式化输出带Z的UTC格式
System.out.println(DateTimeFormatter.ISO_INSTANT.format(instant));

两种方法最终都会输出:2019-11-30T06:01:00.000Z

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:09