I have stored in the DB this Time Frame: any day from 15:00 to 16:00 in LONDON (BST)
I need to execute a program IF when I receive an event is between this Time Frame.
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).
SO this is my code
// 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()));
theoretically now (16:22 in PARIS / 15:22 in LONDON) is after dateTime1 in LONDON (15:00) and before dateTime2 (16:00) in LONDON
but I got that now is not before that dateTime2
A ZoneId is used to identify the rules used to convert between an Instant and a LocalDateTime .
What is the ZoneId for GMT? The ZoneId class is used to identify a time zone and provide the conversion rules between LocalDateTime and Instant. In terms of offset rules, ZoneId is divided into 2 types: ZoneId with a fixed time zone offset, such as "UTC+07", "GMT-05:40", "UT-03", "+05:50".
The systemDefault() method of the ZoneId class in Java is used to return the system default time-zone. Syntax: public String systemDefault() Parameters: This method does not accepts any parameters. Return Value: This method returns the zone ID.
ZonedDateTime handles a date and time with a corresponding time zone with a time zone offset from Greenwich/UTC. OffsetDateTime handles a date and time with a corresponding time zone offset from Greenwich/UTC, without a time zone ID.
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")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With