如何在scala中将带有格式“2024-08-19 00:20:04.0 +2:00”的字符串转换为日期时间格式

问题描述 投票:0回答:1

我有字符串,我想使用相同的格式转换为 toLocalDateTime,但是当我尝试相同的格式“yyyy-MM-dd HH:mm:ss.S Z”时,它无法转换,因为它没有解析时区偏移量:

 LocalDateTime.parse("2024-08-19 00:20:04.0 +2:00",java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S Z"))

它给出以下错误: LocalDateTime.parse("2024-08-19 00:20:04.0 +2:00",java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S Z")) java.time.format.DateTimeParseException:无法在索引 22 处解析文本“2024-08-19 00:20:04.0 +2:00” 在 java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2056) 在 java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1958) 在 java.base/java.time.LocalDateTime.parse(LocalDateTime.java:494) ... 30 已删除

我尝试用 z 替换 Z 但同样的问题,我也尝试用仍然相同的错误替换 Z 有一种方法可以将包含时区偏移的字符串(如“+2:00”)转换为以下格式的日期时间: “2024-08-19 00:20:04.0 +2:00”

java scala datetime
1个回答
0
投票

试试这个:

import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.time.LocalDateTime

val dateTimeString = "2024-08-19 00:20:04.0 +2:00"
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S XXX")

try {
  val zonedDateTime = ZonedDateTime.parse(dateTimeString, formatter)
  val localDateTime = zonedDateTime.toLocalDateTime

  println(localDateTime)
} catch {
  case e: Exception => e.printStackTrace()
}
© www.soinside.com 2019 - 2024. All rights reserved.