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

Scala中如何将指定日期格式转换为目标UTC日期格式?

在Scala中转换特定格式的UTC日期字符串

要把格式为2021-02-28 13:38:00.597+0000的日期字符串转换为Mon, Feb 28,2021 15:25:00 UTC格式的UTC日期,可以直接使用Java 8+引入的java.time系列API(Scala完全兼容这套API),具体实现如下:

1. 导入必要类

import java.time.{ZonedDateTime, ZoneId}
import java.time.format.DateTimeFormatter
import java.util.Locale // 可选,确保月份/星期为英文缩写

2. 定义日期格式器

分别定义输入字符串的解析规则,以及目标输出的格式规则:

// 匹配输入格式:yyyy-MM-dd HH:mm:ss.SSS+0000
val inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ")

// 匹配输出格式:EEE, MMM dd,yyyy HH:mm:ss UTC
// 指定Locale.ENGLISH避免系统默认语言影响,确保月份和星期为英文
val outputFormatter = DateTimeFormatter.ofPattern("EEE, MMM dd,yyyy HH:mm:ss zzz", Locale.ENGLISH)
  .withZone(ZoneId.of("UTC")) // 强制输出UTC时区的时间

3. 解析并转换日期

// 输入的日期字符串
val inputDateStr = "2021-02-28 13:38:00.597+0000"

// 解析为带时区的日期时间对象
val zonedDateTime = ZonedDateTime.parse(inputDateStr, inputFormatter)

// 格式化为目标字符串
val outputDateStr = outputFormatter.format(zonedDateTime)

// 输出结果:Sun, Feb 28,2021 13:38:00 UTC
println(outputDateStr)

关键说明

  • 输入格式中的Z用于匹配时区偏移量(如+0000),SSS匹配毫秒部分;输出格式中的EEE是星期缩写,MMM是月份缩写,zzz是时区名称。
  • 即使输入日期是其他时区的偏移量,withZone(ZoneId.of("UTC"))会自动将时间转换为UTC后再格式化。
  • 推荐使用java.timeAPI而非旧的java.util.Date/SimpleDateFormat,前者线程安全且设计更合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:30:55