mktime devuelve una marca de tiempo incorrecta (desactivada por un mes entero)
yo suelomktime
para crear una marca de tiempo de Unix a partir de mi hora local actual:
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
struct tm info;
// 16.05.2014
info.tm_mday = 16;
info.tm_mon = 5;
info.tm_year = 114; // Years since 1900
// 08:00:00 Uhr
info.tm_hour = 8;
info.tm_min = 0;
info.tm_sec = 0;
// Convert to Unix timestamp
info.tm_isdst = -1;
time_t timestamp = mktime(&info);
printf("Timestamp: %i", timestamp);
}
Esto me da:
1402898400
Al convertir esto de nuevo a un tiempo legible para humanos (a través de algún sitio web) esto se traduce en:
16.06.2014 08:00:00
Como puede ver, esto es un mes de descuento de lo que esperaba (puesto en mayo (5), salió en junio (6)). ¿Por qué?