gpt4 book ai didi

java - 从没有时区的字符串到欧洲/柏林的时间

转载 作者:行者123 更新时间:2023-12-05 09:35:15 25 4
gpt4 key购买 nike

我一整天都在尝试解析一个日期,我从一个系统中得到一个没有时区的字符串到一个带有时区并应用了时差的字符串

原始字符串:“01/27/2021 14:47:29”

目标字符串:“2021-01-27T13:47:29.000+01:00”

问题:目标系统无法更改格式。我需要申请,它会根据夏季/冬季时间自动减去正确的小时数。所以仅减去 -1 不是解决方案。

我试过几个这是我最后一次尝试,几乎是正确的,但它没有正确更改时间:

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss").withZone(DateTimeZone.forID(
"Europe/Berlin"));
DateTime dt = fmt.parseDateTime(lastModifid);
dt.toString()

结果是“2021-01-27T14:47:29.000+01:00”

是否有一个简单的解决方案来应用这些时差?

最佳答案

答案(自 Java 8 起)使用 ZonedDateTime .我不认为你需要做任何“时区算术”来做你需要的。像这样简单地将时间从一个区域转换为另一个区域:

    ZoneId sourceTZ = ZoneId.of(...);    //String denoting source time zone
ZoneId targetTZ = ZoneId.of(...); //String denoting target time zone

LocalDateTime now = LocalDateTime.now();

ZonedDateTime sourceTime = now.atZone(sourceTZ);
ZonedDateTime targetTime = sourceTime.withZoneSameInstant(targetTZ);

在此之后,您可以使用 DateTimeFormatter 根据需要格式化时间戳字符串。

关于java - 从没有时区的字符串到欧洲/柏林的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65957771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com