Непонятное поведение функции strptime()
:Почему функция c-функции strptime меняет структуру?
#define _XOPEN_SOURCE
#include <stdio.h>
#include <time.h>
double getPeriod(char * dateStart, char * dateStop) {
struct tm tmStart, tmStop;
time_t timeStampStart, timeStampStop;
strptime(dateStart, "%Y-%m-%d %H:%M:%S", &tmStart);
strptime(dateStop, "%Y-%m-%d %H:%M:%S", &tmStop);
timeStampStart = mktime(&tmStart);
timeStampStop = mktime(&tmStop);
printf("%d\t%d\n", tmStart.tm_hour, tmStop.tm_hour);
}
int main()
{
getPeriod("2016-12-05 18:14:35", "2016-12-05 18:18:34");
return 0;
}
Выход:
17 18
Почему это происходит?
компилятор GCC (GCC) 6.2.1 ОС Linux
Вам необходимо инициализировать член 'tm_isdst'' timeStampStart' и 'timeStampStop' до -1. – user4815162342
[Кажется, нужно работать на GCC и Clang здесь] (http://coliru.stacked-crooked.com/a/6b54f234cc33eb6c) – AndyG
@ user4815162342: О, человек, что летнее время всегда есть такая боль! И я думаю, что вы предназначались для 'tmStart' и' tmStop' – AndyG