java - Java的BST ZoneId代表什么?

标签 java date java-8 timezone localdate

我将这个时间范围存储在数据库中:伦敦(英国夏令时)从 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/

相关文章:

java - Android MediaPlayer 行为(事件顺序保证)

java - 如何在 Linux 上配置 VSCode 使其在不同的项目中为 Gradle 应用不同的 JAVA_HOME?

MySql datetime字段值查询后返回错误

javascript - 本地系统日期格式

java - 如何使用 java 8 流创建多个新的 Hashmap?

java - 为什么 Map.compute() 采用 BiFunction

通过 JDBC 连接到数据库时出现 java SQLException

java - Phonebook.java 项目的搜索功能

php - 如何从完整的 'Day' 字符串中仅提取 'Date' 值?

lambda - 计算素数(流和 lambda)