Java的BST ZoneId代表什么? [英] What does Java's BST ZoneId represent?

查看:286
本文介绍了Java的BST ZoneId代表什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆