Как определить, активно ли летнее время в C? - PullRequest
4 голосов
/ 18 августа 2011

У меня есть приложение C, работающее на кроссплатформенных платформах.В этой программе мне нужно написать функцию, которая определяет, является ли данная дата летним или нет.
На самом деле, я пытаюсь найти даты окончания летнего времени DST в чистом C. Есть ли простой и стандартный способ сделать это

Ответы [ 3 ]

5 голосов
/ 18 августа 2011

time.h обеспечивает tm структуры с флагом tm_isdst.Используйте time, чтобы получить текущее время, localtime, чтобы получить структуру tm со временем, настроенным на текущую локаль, и прочитайте флаг tm_isdst.

С справочной страницы:

tm_isdst  A flag that indicates whether daylight saving time is in effect at the
time described.  The value is positive if daylight saving time is in effect, zero 
if it is not, and negative if the information is not available.
0 голосов
/ 26 апреля 2018

Код:

time_t rawtime;
struct tm timeinfo;  // get date and time info
time(&rawtime);
localtime_s(&timeinfo, &rawtime);
int isdaylighttime = timeinfo.tm_isdst;
0 голосов
/ 01 февраля 2016

Реализация не может предполагать, что tm_isdst всегда равно 0. Она должна предоставлять правильные данные.Если реализация не может предоставить tm_isdst, который согласуется с правилами, установленными в стране, то следует установить для tm_isdst отрицательное значение, как указано в 7.23.1 / 4 в том же стандарте .

...