Java的BST ZoneId代表什么? [英] What does Java's BST ZoneId represent?
问题描述
我已在DB中存储此时间范围:伦敦(BST)15:00至16:00的任何一天
I have stored in the DB this Time Frame: any day from 15:00 to 16:00 in LONDON (BST)
我需要执行一个程序IF当我收到一个事件是在这个时间框架之间。
I need to execute a program IF when I receive an event is between this Time Frame.
我现在正在巴黎(16:22)进行测试,伦敦时间是15:22(所以介于两者之间)存储在数据库中的时间框架。
I am running the Test now in Paris (16:22) where in London is 15:22 (so in between the Time Frame stored in the DB).
这是我的代码
// 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)之前
theoretically now (16:22 in PARIS / 15:22 in LONDON) is after dateTime1 in LONDON (15:00) and before dateTime2 (16:00) in LONDON
但我现在不是那个dateTime2
but I got that now is not before that dateTime2
推荐答案
如 的javadoc> ZonedId.SHORT_IDS
,BST不是英国夏令时但孟加拉国标准时间( Asia / Dhaka
)。
As indicated in the javadoc of ZonedId.SHORT_IDS
, "BST" is not British Summer Time but Bangladesh Standard Time (Asia/Dhaka
).
您可以通过以下方式检查价值:
You can check the value with:
System.out.println(ZoneId.of("BST", ZoneId.SHORT_IDS));
所以我建议使用全时区名称以避免混淆:
So I suggest using full time zone names to avoid any confusion:
ZoneId london = ZoneId.of("Europe/London")
这篇关于Java的BST ZoneId代表什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!