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

如何在Groovy脚本中将UTC时区时间转换为CET时区时间

Groovy 时区转换实现方案

以下为可直接运行的实现代码,基于Java 8+ 内置的java.time包(Groovy原生兼容),是当前最优实现方案:

import java.time.ZonedDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter

// 输入UTC时间字符串
def inputUtcStr = '2021-08-31T22:00:00Z'
// 解析为UTC时区的ZonedDateTime对象
ZonedDateTime utcTime = ZonedDateTime.parse(inputUtcStr)
// 转换为CET时区时间
ZonedDateTime cetTime = utcTime.withZoneSameInstant(ZoneId.of("CET"))
// 按要求格式输出
def outputDate = cetTime.format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))

println outputDate
// 样例输入的输出结果为:01-09-2021

注意事项

  • 时区标识优先选择区域ID:如果运行环境存在时区简写兼容问题,可以替换"CET"为对应区域标准ID,比如"Europe/Paris"、"Europe/Berlin",覆盖CET时区的区域标识可保证转换精度。
  • 日期格式符大小写严格区分:
    • dd代表当月日期,大写DD代表年积日(一年的第几天)
    • MM代表月份,小写mm代表分钟
    • yyyy代表公历年,大写YYYY代表周年(跨年周会出现年份偏移问题)
      严格按照上述格式符编写才能得到符合DD-MM-YYYY样式的输出结果。

兼容Java 8之前版本的旧实现

如果运行环境依赖的Java版本低于8,可以使用SimpleDateFormat实现:

import java.util.TimeZone
import java.text.SimpleDateFormat

def inputUtcStr = '2021-08-31T22:00:00Z'
// 配置UTC解析格式
def utcFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
utcFormatter.setTimeZone(TimeZone.getTimeZone("UTC"))
Date date = utcFormatter.parse(inputUtcStr)
// 配置CET输出格式
def cetFormatter = new SimpleDateFormat("dd-MM-yyyy")
cetFormatter.setTimeZone(TimeZone.getTimeZone("CET"))
def outputDate = cetFormatter.format(date)

println outputDate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:18:04