The end-of-year checks previously presumed they would accompany a zero
daylight-savings change there; however, this misunderstands what a
fake transition is doing. A fake at the end of the year means that the
transition during the year is out of the time the fake claims it goes
into, so the offset nominally in effect after the fake should match
the offset the year started in, the same as for a year-start fake.
However, implementing that exposed the fact that Bangladesh's brief
flirtation with DST in 2009 ended at the end of the year, and MS's
data has no other instance (aside from entirely bogusly claiming that
Bhutan did the same in 2009) of an end-of-year transition, in
particular no fake transitions. So the end-of-year case for faking
does not arise and I've eliminated it from the code here. This
greatly simplifies the code to detect fake DST rules.
At the same time, in the ruleToData() wrapper, use the transition
implied by isDst only if it isn't the fake one; the other is the only
real transition in the year anyway, however described. Also, extract
the detection of start-of-year transition times to a function and make
it more exact.
Pick-to: 6.3
Change-Id: Ide160d28e7cca37c224f40164ebe7f9a17f028e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>