Comando para convertir de UnixTime a Normal

Muchas son las veces que encuentro fechas en formato Unix, obviamente no entiendo un demonio de qué fecha y hora me están mostrando, es ahí donde se hace necesario convertir eso que está en UnixTime hacia «normal».

Pero, primero la pregunta:

¿Qué es Unix Time?

Podemos leer a Wikipedia y veremos que el número que tengamos delante es la cantidad de segundos que han pasado desde el 1ro de enero de 1970 hasta ese momento, algo así «1437905791» en realidad significa: 2015-07-26 10:16:31

¿Dónde encuentro fechas en el formato Unix Time?

Muchas aplicaciones acostumbran a guardar las fechas o momentos en este formato en la base de datos que usen, foros, servidores de aplicaciones, etc.

¿Cómo convertir desde la terminal UnixTime a algo que pueda entender?

Simple, supongamos que tenemos la siguiente fecha: 1416483005

Para convertirlo a algo que podamos entender nosotros, basta con anteponerle: date -d @

O sea:

date -d @1416483005

Y eso nos dirá que representa el día 20 de noviembre de 2014, con hora 06:30:05

convert-unix-time

¿Existe alguna web para convertir de UnixTime?

Sí claro, busquen en Google «date to unix» y listo, verán un montón de resultados.

¿Puedo sacar la fecha de MySQL directo convertida?

Si claro, suponiendo que sea una base de datos llamada stats, una tabla llamada times, y tenga un campo llamado date que esté en formato Unix, la consulta para sacar todos los datos de ese campo convertidos ya sería:

select FROM_UNIXTIME(date) from stats.times;

O sea, tenemos una función llamada FROM_UNIXTIME() que nos sirve para esta conversión, si dentro del paréntesis ponemos el campo cuya información es de ese tipo, nos la convierte.

Fin!

Bueno no hay mucho más que agregar, enjoy!


9 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Saeron dijo

    álaaaaa no sabia que se utilizara ese formato, que ortopedico, a ver que pasa cuando el número alcance la memoria máxima de la variable. El fin del mundo chicos, todos estaban equivocados, al final sera unix quien nos diga cuando.

  2.   Mario Guillermo Zavala Silva dijo

    Que excelente publicación… !! Gracias por la Información !!!

    Saludos …

  3.   dhunter dijo

    El log colorizer ccze tiene una opción para convertir el formato de fecha unix.

    tailf /varlog/squid3/access.log | ccze -C

  4.   Armando Ocio dijo

    Muy buen post es bastante útil concer el comando, el unix time es un dolor de cabeza cuando vez algun log y si solo ves el numero no tienes ni idea de que es la fecha en este formato.

    1.    Azureus dijo

      Exacto, que joda es preguntarte cuándo rayos ocurrió algún evento en el sistema y no saber como traducir eso.

  5.   eliotime3000 dijo

    Buena idea la de visualizar la hora con el Unixtime.

  6.   rain dijo

    he estado haciendo pruebas con time.h en c con time(0) me da los segundos desde 1970, ya se que hay herramientas que lo hacen automaticamente pero queria verlo manual
    le sumo 1970 a la cantidad de años que han pasado desde entonces,obtengo los años dividiendo los segundos entre 60 para obtener minutos y de nuevo para obtener las horas luego entre 24 y obtengo los dias por ultimo 365 y obtengo los años.
    long año=1970+((time(0)/60/60/24/365)); me da fecha actual

    para el numero del mes tomo la fecha actual y le resto los segundos de la fecha hasta el año pasado, pero aun tengo un los segundos del año pasado.
    long numdelmes=time(0)-(((time(0)/60/60/24/365)-1)606024365);

    tomo numdelmes y lo divido entre 60 para obtener los minutos y de nuevo por 60 para obtener las horas le resto un año. ya tengo el numero de dias de este año ahora tomo el residuo de la division entre 7 y me dan los dias
    long diasemana=((numdelmes/60/60/24)-365)%7;

    repito el proceso pero ya no divido entre 7 sino entre 31 y obtengo el numero del mes
    numdelmes=((numdelmes/60/60/24)-365)/31;

  7.   Factory dijo

    Un articulo estupendo, ha quedado totalmente claro, además quiero recalcar la labor de la comunidad, en los comentarios también se aclaran muchas dudas y no es fácil tener a gente así siguiente un blog. Un 10.