C/Visual C - Saber el formato de st.mtime

 
Vista:
sin imagen de perfil

Saber el formato de st.mtime

Publicado por Diego (150 intervenciones) el 06/07/2016 16:06:31
tengo las librerias
1
2
3
#include <sys/types.h>
	#include <sys/stat.h>
	#include <unistd.h>
BUen día. Invoco a stat("imagen.jpg", &info).
al usar printf("%lu", info.st_mtime) me arroja: 1466975071
Estuve un buen rato tratando de ver como interpretar ese numero para que me de como resultado:
Sun, 26 Jun 2016 18:04:31 Ya ese es el resultado que me arroja al tratar ese numero con la libreria time.h.
Pero si no pudiera utilizar la librería time.h cómo debería interpretar ese numero entero para poder hacer mi propia funcion.
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
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Saber el formato de st.mtime

Publicado por agustin (272 intervenciones) el 06/07/2016 17:16:09
Estudia este pequeño código que encontré:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
#define LONG_CADENA 128
 
int main(void)
{
   time_t fecha;
   struct tm *temp;
   struct tm fecha_tm;
   char salida[LONG_CADENA];
 
   /* obtener fecha (time_t) */
   if ((fecha = time(NULL)) == (time_t) -1)
      return EXIT_FAILURE;
 
   /* obtener fecha (struct tm) */
   temp = localtime(&fecha);
   memcpy(&fecha_tm, temp, sizeof fecha_tm);
 
   /* imprimir mediante las funciones de la biblioteca time.h */
   printf("%s", ctime(&fecha));
   strftime(salida, LONG_CADENA, "%a %b %d %H:%M:%S %Y\n", &fecha_tm);
   printf("%s", salida);
 
   /* imprimir manualmente */
   printf("        %02d %02d:", fecha_tm.tm_mday, fecha_tm.tm_hour);
   printf("%02d:%02d ", fecha_tm.tm_min, fecha_tm.tm_sec);
   printf("%d\n", fecha_tm.tm_year + 1900);
 
   return EXIT_SUCCESS;
}
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

Saber el formato de st.mtime

Publicado por Tom (619 intervenciones) el 06/07/2016 18:16:02
Si tú quisieras (que no debes, es una pérdida de tiempo) interpretar directamente ese valor, lo primero que deberías hacer es investigar y _leer_ un poco: Tienes a tu disposición las páginas man relevantes (stat (2), time (7)) si usas linux, y si no la Internet y el standard POSIX.

En la información acerca de stat o en la información acerca de time verás que ese campo es un número de segundos transcurridos desde la "unix Epoch". SI no sabes qué es eso y no encuentras enlaces que te lleven directamente a su definición:

https://en.wikipedia.org/wiki/Unix_time

Salud!
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
sin imagen de perfil

Saber el formato de st.mtime

Publicado por Diego (150 intervenciones) el 06/07/2016 21:28:30
Gracias, sole habia leido el man 2 stat desde consola.
Ya habìa intentado incluso ver como era su repreentaciòn y se me ocurriò que como
1466975071 = 10 digitos y tengo 7 valores, no podìa tomarse el numero tal y como està asì que lo interpreté en binario

1010111011100000100001101011111

Sun, 26 Jun 2016 18:04:31
supuse que el formato serìa dd/mm/aaaa hora
para el dìa 7 elementos: 1-7. Con 3 bits me alcanza
101 = 5; contando lunes como primero le sumo 5 = sabado
para los meses 12 elmentos: 1-12. Con 4bits alcanza
0111 = 7 ; enero mes 1; julio mes 7
para los mese tomè 12 bits;
011100000100 = 1796;

Y asì fui probando, pero no me saliò hallar una interpretacion de ese numero.

Luego de eso fui a rendir el coloquio; el cual para mi suerte pasè y se me dio chance de hacer una version final del trabajo en segunda fecha,
Tenendo la duda le preguntè a la persona que me evaluo en el coloquio y me explicò, almenos entendì que es como una fecha base a la cual le aplican alguna operacion + y se obtiene la fecha. La idea la comprendì, pero me quedè con la duda de como serìa la operacion que se realiza para sacar una fecha a partir de ese numero.

Voy a seguir leer al respecto. Y cuando tenga terminado todo el programa lo subo junto la implementacion que haga que comprima directorios y subdirectorios; Aunque ya me dijeron que ese no va a ser necesario en la segunda fecha. Pero no me voy a quedar con las ganas agregar una funcionalidad que me permita comprimit una carpeta completa con todo y sus subdirectorios.

Igualmente creop que voy consultar un poco màs en el foro cuando empiece a manejar directorios.
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
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Saber el formato de st.mtime

Publicado por agustin (272 intervenciones) el 07/07/2016 14:10:31
Prueba esto que se me pasó:
1
2
time_t epch = 1466975071;
printf("%i -> %s", epch, asctime(gmtime(&epch)));
Debería mostrarte lo que quieres.
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