I need to know whether the period defined by:
DateTime start;
DateTime end;
has a DST inside.
I am iterating over collection of per
Because Daylight Savings Time is heavily reliant on TimeZones (some areas don't practice DST, some move clocks 1 hour, some 2 etc) your time variables are going to have to account for location as well.
As such, you might have to have a look at the DateTimeZone
class
DateTimeZone
Use the DateTimeZone.nextTransition method. If the start is less than the end DateTime, then at least one time zone transition has occurred in between. This does not account for rule changes vs. DST. That is, a time zone might have a new rule indicating that standard time has a new offset, and this would appear as a time zone transition.
if (start.getZone().nextTransition(start.getMillis()) < end.getMillis()) {
// Time zone transition occurred, possibly due to DST
...
}
As long as start
and end
are in the correct time zone (e.g., created using this constructor) then the Interval created using them should take DST for that time zone into account. If the Duration of that Interval is not equal to 24 hours, then you've crossed the DST point.