C/Visual C - Formatear fecha

 
Vista:

Formatear fecha

Publicado por s (12 intervenciones) el 09/06/2005 18:05:18
Hola, tengo un problema y no sé si me podéis ayudar.
Estoy programando en C bajo Unix y contra Oracle, y recojo de un fichero de texto la cadena: 20050609 (pe). Tengo que formatearla de forma que me quede lo siguiente: 09/06/2005, ¿alguien sabe como hacerlo?
Gracias, y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Formatear fecha

Publicado por fernando.gomez (1603 intervenciones) el 09/06/2005 18:35:32
Si siempre es de la misma forma, ¿por qué no copias los caracteres? Es decir, supongamos el siguiente array de caracteres:

char szFechaOracle[9];
char szFechaFormateada[11];

ObtenerFechaOracle(szFechaOracle);

szFechaFormateada[0] = szFechaOracle[6];
szFechaFormateada[1] = szFechaOracle[7];
szFechaFormateada[2] = '/';
szFechaFormateada[3] = szFechaOracle[4];
szFechaFormateada[4] = szFechaOracle[5];
szFechaFormateada[5] = '/';
// etc

No es lo más eficiente del mundo, pero igual te sirve. Otra opción es que emplees memcpy's o un sprintf. En el caso de que emplees std::string, puedes iterar y jugar con string::iterator.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formatear fecha

Publicado por s (12 intervenciones) el 10/06/2005 08:08:31
Así lo estoy haciendo, pero quería saber si hay alguna otra forma, más "limpia".
Estoy haciendo lo siguiente:

memset(szA, '\0', 4);
strncpy(szA,szFecha,4);
strcpy(szA,quitaBlancos(szA));
memset(szM, '\0', 2);
strncpy(szM,szFecha+4,2);
memset(szD, '\0', 2);
strncpy(szD,szFecha+6,2);
printf("szA ==%s -- szM= %s -- szD = %s \n", quitaBlancos(szA),szM,szD);

donde szA,szM y szD son char de 4,2 y 2 respectivamente y en szFecha ya tengo 20050609. Pero al hacer el printf me sale lo siguiente:

szA ==2005ÿ -- szM= 06 -- szD = 09 , ¿como puedo hacer para que en szA no me aparezca ese carácter raro?

* la función quitaBlancos, quita los blancos del final de la cadena que le paso como parámetro.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formatear fecha

Publicado por chuidiang (677 intervenciones) el 11/06/2005 06:45:12
Hola:

Las cadenas, siempre, al final, hay que ponerles un /0.
En tu caso, szA, el año, lo estás tratando con 4 caracteres. Deberían ser 5 y poner /0 al final. Con eso no te saldrá el gurruñito. Haz lo mismo con día y mes, que deberían tener 3 caracteres.

Se bueno.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar