gpt4 book ai didi

java - Java的BST ZoneId代表什么?

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:45 24 4
gpt4 key购买 nike

我将这个时间范围存储在数据库中:伦敦(英国夏令时)从 15:00 到 16:00 的任何一天

如果我在这个时间范围内收到事件,我需要执行一个程序。

我现在在巴黎 (16:22) 运行测试,而在伦敦是 15:22(所以在数据库中存储的时间范围之间)。

这是我的代码

// create Local Date Time from what I have stored in the DB

LocalDateTime dateTime1 = LocalDateTime.of(2017, Month.JUNE, 15, 15, 00);
LocalDateTime dateTime2 = LocalDateTime.of(2017, Month.JUNE, 15, 16, 00);

Instant now = Instant.now();

System.out.println (now.isAfter (dateTime1.atZone(ZoneId.of("BST", ZoneId.SHORT_IDS)).toInstant()));
System.out.println (now.isBefore(dateTime2.atZone(ZoneId.of("BST", ZoneId.SHORT_IDS)).toInstant()));

理论上现在(巴黎 16:22/伦敦 15:22)在伦敦的 dateTime1 (15:00) 之后和伦敦的 dateTime2 (16:00) 之前

但我知道现在不早于 dateTime2

最佳答案

the javadoc of ZonedId.SHORT_IDS 中所示,“BST”不是英国夏令时,而是孟加拉国标准时间 ( Asia/Dhaka )。

您可以通过以下方式检查值:

System.out.println(ZoneId.of("BST", ZoneId.SHORT_IDS));

所以我建议使用 full time zone names为避免混淆:

ZoneId london = ZoneId.of("Europe/London")

关于java - Java的BST ZoneId代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570166/

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