We have run into an issue which caused havoc in our system hosted of AWS EC2. We use PHP command of date('I') (capital i) to detect daylight saving time being in action or not. It kept returning "1" quite happily throughout the summer.
On 29/09/2018 around 7:00 am, it started returning "0", indicating a change to a winter time. This happened pretty much exactly one full month before the change was about to happen on October 29.
As a result, we are one hour OFF on our UTC time now. For some reason, PHP our EC2 thinks that the time has switched one month too early.
Linux Timezone is: Europe/Dublin (IST, +0100) PHP timezone is set via date_default_timezone_set('Europe/Dublin');
date('I', strtotime('2018-09-29 02:00:00')) // returns "0" - which is wrong as DST is active now!
DST switches OFF in Ireland on 2018-10-29
date('I', strtotime('2018-11-29 02:00:00')) // returns "1" - which is wrong as DST is Summer time!
Edit: Same issue confirmed on multiple of our AWS EC2 Instances. I will contact Amazon AWS support and update this thread with a resolution.
Issue resolved: https://bugs.php.net/bug.php?id=76983 Apparently, Dublin timezone has an exception based on some historical offset. I am yet to fully understand the reasoning behind this, but it explains the issue technically.