1

Boomi/Java/Groovy noob 这里...我从一个日期(从第 3 方供应商发送给我们)开始,其格式如下:2018-04-18 12:15:00.000000(没有“T”)我们被告知在美国/芝加哥 TZ。我最终需要的是获得以下日期格式的输出(带有“T”,并添加了偏移量):

2018-04-18T12:15:00.000000-06:00

-或者-

2018-04-18T12:15:00.000000-05:00(取决于芝加哥一年中特定时间的当地时间)

我一直在尝试多种 SimpleDateFormat、ZoneID.of、ZonedDateTime.ofInstant、LocalDateTime.ofInstant、LocalDateTime.parse 等的组合......所以,到目前为止,我在找到正确的组合方面失败了。

任何帮助将不胜感激!!

4

1 回答 1

0

您可以将其读取为 LocalDateTime,然后将其移至芝加哥时区的同一时间:

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

String input = "2018-04-18 12:15:00.000000"
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.n")
ZoneId chicago = ZoneId.of("America/Chicago")

LocalDateTime localTime = LocalDateTime.parse(input, format)
ZonedDateTime chicagoTime = localTime.atZone(chicago)

println chicagoTime

印刷:

2018-04-18T12:15-05:00[America/Chicago]

如果您只需要它作为 OffsetDateTime,那么您可以使用该方法toOffsetDateTime()

println chicagoZonedTime.toOffsetDateTime()

哪个打印:

2018-04-18T12:15-05:00
于 2019-09-27T16:03:02.183 回答