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

Java如何获取与JS toGMTString()输出格式一致的GMT日期字符串

问题原因

现有代码存在两处核心错误:

  • 格式串不符合目标格式要求,使用的yyyy-MM-dd'T'HH:mm:ssZ输出的是ISO标准时间格式,和JS toGMTString()输出的格式完全不匹配
  • 返回语句sdf.format(sdf)传入的参数是SimpleDateFormat对象本身,format方法要求传入日期类型参数,类型不匹配会直接触发运行时异常

实现方案

Java 8之前版本(基于SimpleDateFormat)

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

private static String getDateGMT() {
    Date date = new Date();
    // 匹配目标格式的规则,指定Locale.US保证输出英文的星期、月份缩写
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    return sdf.format(date);
}

格式规则说明:

  • EEE:星期英文缩写
  • dd:两位日期
  • MMM:月份英文缩写
  • yyyy:4位年份
  • HH:mm:ss:24小时制时分秒
  • z:时区名称

Java 8及以上版本(推荐使用java.time包)

java.time是Java 8开始提供的官方时间处理类库,所有类不可变、线程安全,完全规避了SimpleDateFormat的并发问题,实现代码如下:

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

private static String getDateGMT() {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
    return ZonedDateTime.now(ZoneId.of("GMT")).format(formatter);
}

两种实现输出的结果完全匹配JS date.toGMTString()的格式,形如Thu, 04 Nov 2021 06:50:37 GMT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:54:04