Здравствуйте!
Как учитывается временная зона в стандартной библиотеке времени time.h?
Все что нашел в файле time.h - упоминание в функции strftime()
Цитата
%Z is replaced by the timezone name or abbreviation, or by no characters if no time zone is determinable.
Попробовал все, что можно вывести, выводит все, кроме временной зоны:
Цитата
time_t rawtime = 1480685759; // Fri, 02 Dec 2016 13:35:59 GMT
struct tm * timeinfo;
timeinfo = (struct tm*)localtime(&rawtime); // Convert time_t to tm as UTC time
char buffer [80];
strftime (buffer,80,"%I:%M%p",timeinfo);
puts (buffer); // 01:35PM
strftime (buffer,80,"%H:%M:%S%p",timeinfo);
puts (buffer); // 13:35:59PM
strftime (buffer,80,"%H:%M:%S",timeinfo);
puts (buffer); // 13:35:59
strftime (buffer,80,"%d.%m.%y",timeinfo);
puts (buffer); // 02.12.16
strftime (buffer,80,"%a_%A",timeinfo);
puts (buffer); // Fri_Friday
strftime (buffer,80,"%b_%B",timeinfo);
puts (buffer); // Dec_December
strftime (buffer,80,"%c",timeinfo);
puts (buffer); // 02 Dec 2016 13:35:59
strftime (buffer,80,"%j",timeinfo);
puts (buffer); // 337 (day of the year as a decimal number (001-366))
strftime (buffer,80,"%W",timeinfo);
puts (buffer); // 48 (the week number of the year (Monday as the first day))
strftime (buffer,80,"%x",timeinfo);
puts (buffer); // 02 Dec 2016
strftime (buffer,80,"%X",timeinfo);
puts (buffer); // 13:35:59
strftime (buffer,80,"%y",timeinfo);
puts (buffer); // 16 (year without century).
strftime (buffer,80,"%Y",timeinfo);
puts (buffer); // 2016 (year with century)
strftime (buffer,80,"%Z",timeinfo);
puts (buffer); // ???
Не знаю, как её задавать. Ведь с систем синхронизации будет время UTC+0, а у меня локальное UTC+3. Т.е. где-то должна быть временная зона.
Посмотрел у других - для PIC24 (компилятор XC16) в файле time.h есть переменная time_zone:
Код
extern int time_zone; /* minutes WESTWARD of Greenwich */
/* this value defaults to 0 since with
operating systems like MS-DOS there is
no time zone information available */
Сообщение отредактировал Pridnya - Dec 5 2016, 06:52