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

如何在Java中将Twitter时间戳转换为Date对象?求标准Java代码示例

嘿,这个需求我太熟了!Twitter返回的时间戳是标准的ISO 8601格式(末尾的Z代表UTC时区),下面给你两种实用的实现方案,分别适配不同的Java版本:

Java 8及以上版本(推荐)

从Java 8开始,官方推出了全新的日期时间API(java.time包),不仅线程安全,用法也更直观,处理这种格式的时间戳简直是小菜一碟:

import java.time.Instant;
import java.util.Date;

public class TwitterTimestampConverter {
    public static void main(String[] args) {
        String twitterTimestamp = "2015-01-06T21:07:00Z";
        
        // 直接解析ISO格式时间戳为Instant
        Instant instant = Instant.parse(twitterTimestamp);
        // 把Instant转换为传统的Date对象
        Date date = Date.from(instant);
        
        System.out.println("转换后的Date对象:" + date);
    }
}

小提示:Instant.parse()可以自动识别这种带Z的UTC时间格式,完全不需要手动写格式模板,省心又不容易出错。如果需要和旧代码集成,Date.from()和Date.toInstant()是新旧API之间的完美桥梁。

Java 8之前的兼容方案

如果你的项目还在使用Java 7或更早版本,只能用传统的SimpleDateFormat来处理,但要注意它是线程不安全的,千万不要在多线程环境下共享同一个实例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class TwitterTimestampConverter {
    public static void main(String[] args) {
        String twitterTimestamp = "2015-01-06T21:07:00Z";
        // 定义匹配Twitter时间戳的格式模板
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        
        // 关键!必须设置时区为UTC,否则会用系统本地时区解析,导致时间偏差
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        
        try {
            Date date = sdf.parse(twitterTimestamp);
            System.out.println("转换后的Date对象:" + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

重点提醒:这里一定要设置时区为UTC,因为时间戳里的Z表示这是UTC时间,如果省略这一步,解析出来的时间会和实际时间有偏差,这是很多人容易踩的坑!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:52