Foros del Web » Programación para mayores de 30 ;) » C/C++ »

<ctime> duda sobre falla de conversion

Estas en el tema de <ctime> duda sobre falla de conversion en el foro de C/C++ en Foros del Web. BUENAS EL SIGUIENTE CODIGO DEBERIA DAR EXACTAMENTE LO MISMO Y NO ME DA. int main(int argc, char *argv[]) { time_t tiempo=time(&tiempo); struct tm * timeinfo=localtime(&tiempo); ...
  #1 (permalink)  
Antiguo 19/02/2013, 07:49
 
Fecha de Ingreso: febrero-2013
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
<ctime> duda sobre falla de conversion

BUENAS EL SIGUIENTE CODIGO DEBERIA DAR EXACTAMENTE LO MISMO Y NO ME DA.

int main(int argc, char *argv[]) {
time_t tiempo=time(&tiempo);
struct tm * timeinfo=localtime(&tiempo);
timeinfo->tm_wday=3;
cout<<asctime(timeinfo);
time_t to;
to=mktime(timeinfo);
timeinfo=localtime(&to);
cout<<endl<<asctime(timeinfo);
return 0;
}

MI OBJETIVO ES MODIFICAR EL DIA DE LA SEMANA EN EL STRUCT tm Y VOLVERLO A CONVERTIR EN TIPO time_t PARA LUEGO VOLVERLO A USAR EN OTRO MOMENTO SIN EMBARGO EN MI CONSOLA EN UNO ME DA WED Y EN OTRO ME DA TUE..

MUCHAS GRACIAS ,
saludos
  #2 (permalink)  
Antiguo 19/02/2013, 20:19
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 22
Respuesta: <ctime> duda sobre falla de conversion

Hola, puedes consultar la referencia de mktime aquí. Como verás al momento de realizar la conversión utilizando mktime tanto tm_wday como tm_yday son ignorados, porque esos campos los ajusta automáticamente con base en los demás datos para obtener una fecha válida como resultado final. En tu caso estás obteniendo la fecha al día de hoy: martes 19 de febrero, luego tu cambias el día por miércoles y mktime dice: "No existe un miércoles 19 de febrero de 2013", luego entonces devuelve martes 19 de febrero de 2013 que si es una fecha válida.

Lo puedes ver de ésta manera: mktime hace lo inverso a localtime pero en sentido estricto no es una función inversa de localtime, ya que puede ajustar algunos valores para retornar una fecha válida.

Saludos.

Etiquetas: conversion, falla, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:19.