Título: Funciones para obtener fecha y hora local Publicado por: terrateck en 25 Diciembre 2013, 21:36 pm Hola a todos,
Estoy teniendo problemas con las funciones time y localtime para obtener la hora local. En el siguiente ejemplo que muestro intento obtener dos fechas diferentes con un delay de 5 seg entre ellas, usando variables independientes. Antes de obtener la segunda fecha imprimo también en pantalla la primera para la comprobación. Código
Sin embargo al imprimir al final las dos últimas fechas, los valores que se obtienen son exactamente iguales. No entiendo por qué al ejecutar tinfo2=localtime(&t2) la estructura t1 también se ve alterada... Salida generada: Código: 25/12/2013 15:38:34 Si alguien pudiera aclarármelo se lo agradecería. Saludos. Título: Re: Funciones para obtener fecha y hora local Publicado por: rir3760 en 26 Diciembre 2013, 02:23 am Sin embargo al imprimir al final las dos últimas fechas, los valores que se obtienen son exactamente iguales. No entiendo por qué al ejecutar tinfo2=localtime(&t2) la estructura t1 también se ve alterada Es un error lógico. El problema no son las variables t1 y t2 sino tinfo1 y tinfo2.La documentación de la función "localtime" es: Citar localtime Ella retorna la dirección de un objeto interno con clase de almacenamiento estático, esto es, se crea justo antes de llamarse a la función main y se destruye al finalizar el programa, por eso la dirección que retorna en cada llamada es la misma. Puedes comprobarlo imprimiendo la dirección de esos dos punteros justo antes de terminar tu programa.struct tm *localtime(const time_t *tod); The function stores in the static-duration time structure an encoding of the calendar time in *tod, expressed as local time. It returns the address of that structure. Para que tenga el comportamiento que indicas debes evitar el uso de punteros, de esta forma: Código
Un saludo Título: Re: Funciones para obtener fecha y hora local Publicado por: terrateck en 26 Diciembre 2013, 09:37 am Gracias rir3760 por la aclaración conceptual y por la corrección. Me ha servido para solucionar el problema.
Parece que el usuario dayu34 está haciendo spam. Saludos |