Как уже говорилось, ваш вопрос не подтверждает, что существует множество различных определений летнего времени. Хотелось бы найти эту статью - было отличное интервью с оригинальными сопровождающими таблиц DST о том, как они на самом деле догадывались во многих частях мира.
Пакет часовых поясов в Debian и других определяетмногие из этих правил в меру своих возможностей.
Мой совет: конвертируйте все даты в известный часовой пояс, используя авторитетные инструменты (типичный случай UTC; или вторичный ваш местный часовой пояс), и делайте всеваши расчеты основаны на этом, не пытаясь понять более 120 различных определений часовых поясов.
Если вы действительно хотите знать, находится ли данная дата в ситуации летнего времени, я бы преобразовал дату в заданный часовой пояс, форматон с расширением DST (например, MDT / MST для горного летнего времени или горного стандартного времени) и ищет суффикс MDT / MST для определения дневного света. Вам нужно будет определить, какой язык вы хотите использовать для перехода на летнее время, однако, поскольку день окончания работы варьируется от языка к языку.