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

如何将Java生成的日期转换为带T和Z的UTC标准格式?

日期格式生成与T字符解释

关于格式中的"T"和"Z"

  • T:是ISO 8601标准日期时间格式里的固定分隔符,用来明确区分日期段(2023-01-16)和时间段(23:59:59.938)。
  • Z:代表UTC时区(零时区),等价于+00:00,表示该时间基于国际标准时间,而非本地时区。

生成目标格式日期的实现

推荐使用Java 8及之后引入的java.time包下的日期时间API(替代老旧的Date/Calendar,API设计更合理,避免线程安全问题):

示例代码(Java 8+)

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class DateExample {
    public static void main(String[] args) {
        // 1. 获取当前时间,减去1年
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime oneYearAgo = now.minus(1, ChronoUnit.YEARS);
        
        // 2. 调整到目标时间:23:59:59.938(可按需修改日期、时间参数)
        LocalDateTime targetDateTime = oneYearAgo
                .withDayOfMonth(16)
                .withHour(23)
                .withMinute(59)
                .withSecond(59)
                .withNano(938_000_000); // 938毫秒转纳秒
        
        // 3. 转换为UTC时区并格式化为目标格式
        String frmDt = targetDateTime.atOffset(ZoneOffset.UTC)
                .format(DateTimeFormatter.ISO_INSTANT);
        
        System.out.println("FrmDt: \"" + frmDt + "\"");
    }
}

兼容旧版Java(Java 7及以下)

若需兼容旧版本,可使用SimpleDateFormat(注意:该类非线程安全,多线程场景需谨慎):

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

public class OldDateExample {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        // 减去1年
        cal.add(Calendar.YEAR, -1);
        // 调整日期、时间参数
        cal.set(Calendar.DAY_OF_MONTH, 16);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 938);
        
        // 指定UTC时区并格式化
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        
        String frmDt = sdf.format(cal.getTime());
        System.out.println("FrmDt: \"" + frmDt + "\"");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:39:27