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

Java中如何将2017-08-01T16:00:00-04:00转为时间戳?代码报错求助

搞定Java日期转时间戳的问题

嘿,我瞅了下你的代码,问题主要出在两个地方,咱们一步步来修正:

1. 格式化模式写错了

你用的"yyyy-MM-dd'T'HH:mm:ss-mm:ss"完全不对——原字符串末尾的-04:00是时区偏移量,不是重复的分钟秒,你得用对应的格式符(比如XXX)来匹配它,而不是瞎写-mm:ss。

2. 选了错误的日期类

LocalDate只负责处理“年-月-日”这种纯日期信息,根本管不了时间和时区偏移。你的字符串明明包含完整的时间和时区,得用OffsetDateTime才能正确解析。

修正后的可运行代码

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class DateConversion {
    public static void main(String[] args) {
        String dateString = "2017-08-01T16:00:00-04:00";
        
        // 用Java预定义的ISO格式,完美匹配你的字符串结构
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        // 用OffsetDateTime解析带时区偏移的完整日期时间
        OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateString, formatter);
        
        // 转成毫秒级时间戳
        long timestamp = offsetDateTime.toInstant().toEpochMilli();
        
        System.out.println("解析后的日期时间: " + offsetDateTime);
        System.out.println("对应的毫秒时间戳: " + timestamp);
        // 如果要秒级时间戳,用这个:offsetDateTime.toInstant().getEpochSecond()
    }
}

额外小提示

如果你不想用预定义的ISO_OFFSET_DATE_TIME,也可以自定义格式字符串:DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"),XXX就是用来匹配-04:00这种时区偏移的格式符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 07:52:47