Метод уродливой грубой силы:
Позвоните time(NULL)
, чтобы получить текущее время в виде значения time_t
.
Используйте localtime()
для преобразования этого значения в struct tm
. (Попробуйте настроить член tm_hour
на 12, чтобы ежедневно проверять полдень.)
Неоднократно добавляйте 1 день к члену tm_day
вашего struct tm
, затем используйте mktime()
для преобразования обратно в time_t
.
Используйте difftime()
, чтобы сравнить каждое увеличенное значение time_t
с предыдущим. Когда `difftime () дает вам значение, которое не близко к 86400.0 (количество секунд в 1 дне), вы обнаружили переход на летнее время. Если вы делаете это 365 раз, не найдя перехода, что-то не так.
Вероятно, вы можете воспользоваться некоторыми сочетаниями клавиш, если вы хотите сделать некоторые предположения о представлении time_t
.
Очевидно, что это только набросок решения - и я сам не пробовал.
И я только что перечитал вопрос и понял, что полностью проигнорировал ту часть, где вы сказали, что компьютер не работает на PST или PDT. (Вы можете установить часовой пояс для программы?)