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

求助:将指定字符串转为GMT格式日期并获取当前GMT时间

解决日期转换与GMT时间获取需求

没问题,这就帮你搞定这两个需求,直接上可用的代码和逻辑说明:

1. 将指定字符串转为GMT时区的dd-MMM-yyyy HH:mm格式

首先要确保正确解析输入的字符串"19-Aug-2019 11:05",这里分两种常见场景:

场景一:输入字符串本身就是GMT时间

如果原字符串的时间是基于GMT的,解析时要指定时区,避免本地时区干扰:

// 定义匹配输入格式的DateFormat,并设置GMT时区
SimpleDateFormat inputFormatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm")
inputFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))

// 解析字符串为Date对象
Date parsedDate = inputFormatter.parse("19-Aug-2019 11:05")

// 定义输出格式,同样设置GMT时区
SimpleDateFormat outputFormatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm")
outputFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))

// 格式化得到结果
String formattedGmtDate = outputFormatter.format(parsedDate)
println "转换后的GMT时间: ${formattedGmtDate}"

场景二:输入字符串是本地时区时间

如果原字符串是你所在时区的时间,只需要去掉解析时的时区设置,解析后再转成GMT格式即可:

// 用本地时区解析输入字符串
SimpleDateFormat inputFormatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm")
Date parsedDate = inputFormatter.parse("19-Aug-2019 11:05")

// 转成GMT格式输出
SimpleDateFormat outputFormatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm")
outputFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))

String formattedGmtDate = outputFormatter.format(parsedDate)
println "转换后的GMT时间: ${formattedGmtDate}"

2. 获取当前GMT时间

这部分你的代码已经有基础了,完善后的版本如下:

// 获取当前时间
Date currentDate = new Date()

// 定义GMT格式的DateFormat
SimpleDateFormat gmtFormatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm")
gmtFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))

// 格式化输出当前GMT时间
String currentGmtTime = gmtFormatter.format(currentDate)
println "当前GMT时间: ${currentGmtTime}"

额外推荐:Java 8+ 更安全的处理方式

SimpleDateFormat是线程不安全的,如果你的项目使用Java 8及以上版本,更推荐使用DateTimeFormatter和ZonedDateTime:

// 字符串转GMT格式(输入为GMT时间)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm").withZone(ZoneId.of("UTC"))
ZonedDateTime parsedZdt = ZonedDateTime.parse("19-Aug-2019 11:05", formatter)
String formattedDate = formatter.format(parsedZdt)
println "Java8+转换后的GMT时间: ${formattedDate}"

// 获取当前GMT时间
ZonedDateTime currentGmtZdt = ZonedDateTime.now(ZoneId.of("UTC"))
String currentGmt = formatter.format(currentGmtZdt)
println "Java8+当前GMT时间: ${currentGmt}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:56:24