Estoy ejecutando el código siguiente.Comportamiento confuso de la función mktime(): aumentando tm_hour count por uno
int main()
{
struct tm storage={0,0,0,0,0,0,0,0,0};
char *p = NULL;
p = (char *)strptime("2012-08-25 12:23:12","%Y-%m-%d %H:%M:%S",&storage);
char buff[1024]={0};
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
storage.tm_sec += 20;
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
mktime(&storage);
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
return 0;
}
si el programa anterior ejecutado, imprime '2012-08-25 13:23:32' en lugar de '2012-08-25 12:23:32'. Ayuda, por qué aumenta el valor de tm_hour. Esto funciona correctamente si pongo la fecha de entrada como '2012-02-25 12:23:32' en el programa, lo cual es confuso.
de salida ->
[[email protected] root]$ ./a.out
2012-08-25 12:23:12
2012-08-25 12:23:32
2012-08-25 13:23:32
[[email protected] root]$
Información Fecha en mi sistema, ->
[[email protected] root]$ date
Sat Aug 25 08:28:26 EDT 2012
El código no indica que la hora va en aumento.Para hacerlo, muestre el resultado que vino de 'strptime' así como el resultado que vino de la llamada a' mktime'. Eso ayudará a precisar lo que está sucediendo realmente. –
Lo siento, no puedo analizar eso. Tiene tres salidas en lugar de una, pero no indica de dónde vienen. Actualice el código de muestra para que coincida con la salida. –