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

如何使用SimpleDateFormat输出UTC格式的日期时间?

如何输出带"UTC"后缀的UTC时间格式

需求说明

需要输出格式如下的UTC时间:

2023-01-11 09:25:52 UTC

使用yyyy-MM-dd HH:mm:ss Z格式会得到带偏移量的结果(如2023-01-11 09:29:25 +0100),直接用yyyy-MM-dd HH:mm:ss 'UTC'会强制给所有时区的时间加上UTC后缀,导致错误。


解决方案

1. Java 8及以上(推荐使用新时间API)

使用java.time包的类,先确保时间为UTC时区,再指定格式输出:

import java.time.Instant;
import java.time.format.DateTimeFormatter;

public class UTCFormatDemo {
    public static void main(String[] args) {
        // 获取当前UTC时间
        Instant utcNow = Instant.now();
        // 定义格式,绑定UTC时区并指定后缀
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss 'UTC'")
                .withZone(java.time.ZoneOffset.UTC);
        String formattedTime = formatter.format(utcNow);
        System.out.println(formattedTime);
    }
}

执行后将输出标准的yyyy-MM-dd HH:mm:ss UTC格式,且仅输出UTC时间。

2. Java 8之前(兼容SimpleDateFormat)

需要先将SimpleDateFormat的时区设置为UTC,再使用固定后缀:

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

public class OldUTCFormatDemo {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'UTC'");
        // 强制设置时区为UTC
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String formattedTime = sdf.format(new Date());
        System.out.println(formattedTime);
    }
}

关键是必须先设置时区为UTC,避免本地时区的时间错误带上UTC后缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:30:33