• Martes 7 de Mayo de 2024, 23:08

Autor Tema:  Dar formato dd:hh:mm:ss a una cadena  (Leído 1885 veces)

ripito

  • Nuevo Miembro
  • *
  • Mensajes: 7
  • Nacionalidad: es
    • Ver Perfil
Dar formato dd:hh:mm:ss a una cadena
« en: Domingo 17 de Mayo de 2009, 20:32 »
0
Hola grupo,

Desde un fichero extraigo una cadena que representan a segundos. El problema es que quiero convertir esa cadena del tipo "3245.4" al formato dd hh:mm:ss y no tengo ni idea de como hacerlo.

Googleando he encontrado codigo pero no se por donde pillarlo.
Código: Text
  1.  
  2.         time_t tiempo = (time_t) buffer;//time(0);
  3.         struct tm *tlocal = localtime(&tiempo);
  4.         char output[128];
  5.         strftime(output,128,"%d %H:%M:%S",tlocal);
  6.         printf("%sn",output);
  7.  
  8.  

ripito

  • Nuevo Miembro
  • *
  • Mensajes: 7
  • Nacionalidad: es
    • Ver Perfil
Re: Dar formato dd:hh:mm:ss a una cadena
« Respuesta #1 en: Domingo 17 de Mayo de 2009, 20:33 »
0
Espero que me puedan echar un cable.

Saludos y gracias!

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Dar formato dd:hh:mm:ss a una cadena
« Respuesta #2 en: Domingo 17 de Mayo de 2009, 21:23 »
0
mira, te doy un pequeño ejemplo del uso de time.h :

Código: C
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main(){
  5.  
  6.     time_t  ahora; /*Es un tipo que representa el tiempo*/
  7.     struct tm  *ts;  /*struct que 'separa' el tiempo representado en formato condensado*/
  8.     char output[128];
  9.  
  10.     ahora = time(NULL); /*obtengo el tiempo actual*/
  11.  
  12.     ts = localtime(&ahora); /*localtime transforma el tiempo condensado entregado en time en un struct tm */
  13.     strftime(output,128,"%d %H:%M:%S",ts);         /*guardo en output el tiempo de ts con un formato especial (dd hh:mm:ss)*/
  14.     printf("%sn",output);
  15.  
  16.     return 0;
  17.  
  18. }
  19.  

por ejemplo en mi caso, la salida del programa fue: 17 15:16:48

espero que te halla aclarado un poco el panorama. Consulta la web de ConClase .net , en la sección librerías a una explicación detallada de la librería time y de sus funciones como también estructuras.

Saludos!

ripito

  • Nuevo Miembro
  • *
  • Mensajes: 7
  • Nacionalidad: es
    • Ver Perfil
Re: Dar formato dd:hh:mm:ss a una cadena
« Respuesta #3 en: Lunes 18 de Mayo de 2009, 19:42 »
0
Al final desisti y lo hice "a pedal"  :hitcomp:

Código: Text
  1.  
  2.     tiempo = atof(buffer);
  3.  
  4.     dias = tiempo / DIA;
  5.     horas = ((int)tiempo % DIA) / HORA;
  6.     minutos = (((int)tiempo % DIA) % HORA) / MINUTO;
  7.     segundos= ((((int)tiempo % DIA) % HORA)) % MINUTO;
  8.  
  9.     printf("Tiempo desde el arranque del sistema: %02i:%02i:%02i:%02in", dias,horas, minutos, segundos);
  10.  
  11.  

Muchas gracias por todo!!