Fecha gregoriana y fecha UNIX.
Resumen.
Un concepto tan elemental como la fecha puede ser expresado de formas muy diferentes, tan diferentes que mientras una es perfectamente reconocida, la otra si no se contextualiza no seria reconocida como una fecha. Os dejo un dato, la fecha UNIX de mi próximo cumpleaños, que es 1693483200. En este artículo veremos como convertir esta fecha UNIX a calendario gregoriano, y este a fecha UNIX.Artículo.
Remontándonos un poco en la historia podemos decir que el actual calendario que usamos cada día, el calendario Gregoriano, tiene su origen en el Papa Gregorio XIII, quien a partir del año 1582 promovió su uso y poco a poco este se impuso de forma prácticamente generalizada en todo el mundo.
La historia de la fecha UNIX es un poco mas reciente, tanto como finales de la década de 1960, y como no, en el MIT (Instituto Tecnológico de Massachusetts). Lo que hoy conocemos como fecha UNIX, fue algo mas que eso, UNIX fue un sistema operativo que a día de hoy sigue vivo, dentro del cual se creo una forma adecuadamente operativa en términos computacionales para manejar el tiempo, la fecha UNIX. Esta fecha, expresada en segundos, cubre el rango comprendido entre 01-01-1970 01:00:00 e inicialmente el último día del año 2037. En el momento actual, por pruebas realizadas en entorno PHP, pueden ser usadas fechas posteriores a este año, la última prueba realizada en versión PHP7 da respuesta hasta el 31-12-9999, y no hago mas pruebas, considero altamente probable haber perdido el pelo para ese día.
Y como no quiero perder el pelo antes de terminar este artículo, vamos al lío. Lo primero ya lo hemos comentado en otro artículo, la fecha gregoriana lo obtenemos mediante la función date().
La fecha o tiempo UNIX la obtenemos mediante la función time(), que como ya comentamos en el artículo referenciado, no recibe parámetros.
El script que presentamos a continuación nos devuelve la fecha gregoriana partiendo de la fecha UNIX mediante la función nativa date().
La historia de la fecha UNIX es un poco mas reciente, tanto como finales de la década de 1960, y como no, en el MIT (Instituto Tecnológico de Massachusetts). Lo que hoy conocemos como fecha UNIX, fue algo mas que eso, UNIX fue un sistema operativo que a día de hoy sigue vivo, dentro del cual se creo una forma adecuadamente operativa en términos computacionales para manejar el tiempo, la fecha UNIX. Esta fecha, expresada en segundos, cubre el rango comprendido entre 01-01-1970 01:00:00 e inicialmente el último día del año 2037. En el momento actual, por pruebas realizadas en entorno PHP, pueden ser usadas fechas posteriores a este año, la última prueba realizada en versión PHP7 da respuesta hasta el 31-12-9999, y no hago mas pruebas, considero altamente probable haber perdido el pelo para ese día.
Y como no quiero perder el pelo antes de terminar este artículo, vamos al lío. Lo primero ya lo hemos comentado en otro artículo, la fecha gregoriana lo obtenemos mediante la función date().
Que como podemos ver recibe diferentes parámetros que ya comentamos en el artículo referenciado.$fecha_gregoriana = date('d-m-Y');
La fecha o tiempo UNIX la obtenemos mediante la función time(), que como ya comentamos en el artículo referenciado, no recibe parámetros.
Estas dos funciones nos dan la fecha actual, pero puede ser de nuestro interés no solo la fecha actual, también puede ser como pasar de una a la otra, siendo este el objetivo de este articulo.$fecha_unix = time();
El script que presentamos a continuación nos devuelve la fecha gregoriana partiendo de la fecha UNIX mediante la función nativa date().
La conversión de la fecha gregoriana en fecha UNIX la podemos hacer mediante la siguiente función que usa la función nativa gmmktime(). Cuando usamos esta función debemos tener en cuanta que no es exacta, el motivo es que no todos los meses tienen la misma duración y existen años bisiestos. Como particularidad, es que es valida para usos horarios GMT oeste y no valida en el este. Otra particularidad de esta función es que no puede recibir valores de mes, día, hora, minutos y segundos con 0 a la izquierda, es decir, julio, que acostumbramos a representarlo como “07” debemos introducirlo en la función como “7”. La función para convertir una fecha gregoriana en fecha UNIX es esta:<?php // Fecha gregoriana que corresponde a una fecha UNIX $unix_actual = time(); $fecha_unix = 1279684469; $fecha_gregoriana = date('d-m-Y h:m:s', $fecha_unix); echo "Fecha UNIX actual: $unix_actual <br /> Fecha UNIX = fecha gregoriana: $fecha_unix = $fecha_gregoriana"; ?>
Y con esto damos por finalizado este capitulo sobre el manejo del tiempo.<?php // Nos da el numero de segundos transcurridos hasta una determinada fecha desde las 1 horas del 1 de enero de 1970 // OJO, esta funcion no es exacta, ya que los años varian en duracion (bisiestos) y los meses no son igual de largos // Valido en GMT y el oeste, invalido en el este // MUY IMPORTANTE: No poner ceros a la izquierda. Correcto '7', incorrecto '07' // Para eliminar los ceros a la izquierda puedes usar 'int' o 'integer' function Time_de_Fecha($_hora,$_minuto,$_segundo,$_Dia,$_Mes,$_Anio){ if ($_Anio > 1969) { // gmmktime(hora, minuto, segundo, mes, dia, año) $segundos_de_Fecha = gmmktime($_hora, $_minuto, $_segundo, $_Mes, $_Dia, $_Anio); } else { $segundos_de_Fecha = 'No hay <b>time()</b> para años anteriores a 1970.'; } return $segundos_de_Fecha; } // Ejecutamos la funcion // Definimos los parametros de entrada de nuestra funcion en el // mismo oreden que para la funcion gmmktime() 21-07-2010 05:07:29 $_hora = 5; // Sin ceros a la izquierda $_minuto = 7; // Sin ceros a la izquierda $_segundo = 29; // Sin ceros a la izquierda $_Dia = 21; // Sin ceros a la izquierda $_Mes = 7; // Sin ceros a la izquierda $_Anio = 2010; // Con cuatro digitos // gmmktime(hora, minuto, segundo, mes, dia, año) $time_de_fecha = Time_de_Fecha($_hora,$_minuto,$_segundo,$_Dia,$_Mes,$_Anio); $time_actual = time(); echo " <p>Time actual $time_actual segundos</p> <p>$_Dia-$_Mes-$_Anio $_hora:$_minuto:$_segundo <b>Time</b> $time_de_fecha segundos</p> "; // Funcion int o integer para eliminar ceros a la izquierda $un_mes = '07'; echo (int)$un_mes; ?>
Tags: UNIX || gregoriano || gmmktime || tiempo || fecha