Advertisement
  1. Code
  2. PHP

Formateando la Fecha y Hora Actual en PHP

by
Read Time:12 minsLanguages:

Spanish (Español) translation by Rene Soto (you can also view the original English article)

A menudo querrás trabajar con fechas y horas en el desarrollo de sitios web. Por ejemplo, es posible que debas mostrar la última fecha de modificación en una publicación o mencionar cuánto tiempo hace que un lector escribió algún comentario.  También es posible que tengas que mostrar una cuenta atrás de los días hasta un evento especial. 

Afortunadamente, PHP viene con algunas funciones de fecha y hora integradas que nos ayudarán a hacer todo eso y mucho más fácilmente.

Este tutorial te enseñará cómo formatear la fecha y hora actual en PHP. También aprenderás cómo obtener la marca de tiempo de una cadena de fecha y cómo sumar y restar fechas diferentes. 

Obtención de la Fecha y Hora en Formato Cadena 

date($format, $timestamp) es una de las funciones de fecha y hora más utilizadas en PHP. Toma el formato de salida deseado para la fecha como primer parámetro y un entero como un valor de marca de tiempo que debe convertirse al formato de fecha dado.  El segundo parámetro es opcional, y omitirlo dará a la salida la fecha y hora actuales en formato de cadena basado en el valor de $format

El parámetro $format acepta una serie de caracteres como valores válidos. Algunos de estos caracteres tienen significados directos: Y le da la representación numérica completa del año con 4 dígitos (2018), e y solo te da los dos últimos dígitos del año actual (18) De manera similar, H te dará la hora en formato de 24 horas con ceros iniciales, pero h te dará la hora en formato de 12 horas con ceros a la izquierda.

Estos son algunos de los caracteres de formato de fecha más comunes y sus valores.

Carácter Siginifcado Ejemplo
d día del mes con ceros iniciales 03 o 17
j día del mes sin ceros a la izquierda  3 o 17
D día de la semana como abreviatura de tres letras Lun
l dia completo de la semana  Lunes
m mes como un número con ceros iniciales  09 o 12
n mes como un número sin ceros iniciales  9 o 12
M mes como abreviatura de tres letras  Sep
F mes completo Septiembre
y año de dos dígitos 18
Y año completo  2018

Hay muchos otros caracteres especiales para especificar la salida de la función date(). Es mejor consultar la tabla de caracteres de formato en la documentación de la función date() para obtener más información sobre casos especiales.

Veamos algunos ejemplos prácticos de la función date() ahora. Podemos usarlo para obtener el año actual, el mes actual, la hora actual, etc., o podemos usarlo para obtener una cadena de fecha completa.

También puedeS usar la función date() para mostrar la hora. Estos son algunos de los caracteres de formato de tiempo más utilizados:

Carácter Siginifcado Ejemplo
g horas en formato de 12 horas sin ceros a la izquierda  1 o 12
h horas en formato de 12 horas con ceros iniciales 01 o 12
G horas en formato de 24 horas sin ceros iniciales 1 o 13
H horas en formato de 24 horas con ceros iniciales  01 o 13
a am / pm en minúscula  am
A am / pm en mayúsculas  AM
i Minutos con ceros iniciales  09 o 15
s segundos con ceros iniciales  05 o 30

Y aquí hay algunos ejemplos de cómo generar cadenas de tiempo con formato. 

También es importante que evites estos caracteres especiales si deseas usarlos dentro de su cadena de fecha.

Obtener la Marca de Tiempo de Unix 

A veces, necesitarás obtener el valor de la marca de tiempo Unix actual en PHP. Esto es muy fácil con la ayuda de la función time(). Devuelve un valor entero que describe la cantidad de milisegundos que han pasado desde el 1 de enero de 1970 a la medianoche (00:00:00) GMT

También puedes utilizar esta función para avanzar y retroceder en el tiempo.  Para hacerlo, todo lo que tienes que hacer es restar el número correcto de segundos del valor actual de time() y luego cambiar el valor resultante en la cadena de fecha deseada. Aquí hay dos ejemplos:

Una cosa importante que debes recordar es que el valor de la marca de tiempo devuelto por time() es independiente de la zona horaria y obtiene el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC. Esto significa que en un momento determinado en el tiempo, esta función devolverá el mismo valor en los Estados Unidos, Europa, India o Japón. 

Otra forma de obtener la marca de tiempo para una fecha en particular sería usar la función mktime ($hour, $minute, $second, $month, $day, $year).  Cuando se omiten todos los parámetros, esta función solo utiliza la fecha y hora locales actuales para calcular el valor de la marca de hora. Esta función también se puede usar con date() para generar cadenas de fecha y hora útiles. 

Básicamente, el time() se puede usar para ir y venir a un período de tiempo, mientras que mktime() es útil cuando se quiere ir a un punto determinado en el tiempo.

Convertir una Cadena de Fecha y Hora en una Marca de Tiempo

La función strtotime ($ time, [$ now = time ()]) será increíblemente útil cuando desees convertir diferentes valores de fecha y hora en formato de cadena a una marca de tiempo. La función puede analizar casi todos los tipos de cadenas de fecha y hora en marcas de tiempo.

Definitivamente, debes verificar los formatos de hora válidos, los formatos de fecha, los formatos de fecha y hora compuestos y los formatos de fecha y hora relativos.

Con los formatos de fecha y hora relativos, esta función puede convertir fácilmente las cadenas utilizadas comúnmente en valores de marca de tiempo válidos. Los siguientes ejemplos deberían dejarlo claro:

Sumar, Restar y Comparar Fechas

Es posible sumar y restar períodos específicos de tiempo desde y hacia una fecha. Esto se puede hacer con la ayuda de las funciones date_add() y date_sub().  También puede usar la función date_diff() para restar dos fechas y mostrar la diferencia entre ellas en términos de años, meses y días, o algo más. 

En general, es más fácil realizar cualquier tipo de aritmética relacionada con la fecha y la hora en un estilo orientado a objetos con la clase DateTime en lugar de hacerlo de manera procesal. Intentaremos ambos estilos aquí, y puedes elegir el que más te guste.

Cuando se usa DateTime :: diff(), el objeto DateTime en el que se llama al método diff() se resta del objeto DateTime que se pasa al método diff(). Cuando está escribiendo un código de estilo de procedimiento, el primer parámetro de fecha se resta del segundo parámetro de fecha. 

Tanto la función como el método devuelven un objeto DateInterval () que representa la diferencia entre dos fechas. Este intervalo se puede formatear para dar una salida específica utilizando todos los caracteres listados en la documentación del método format().

La diferencia entre el estilo orientado a objetos y el estilo de procedimiento se hace más evidente al restar o agregar un intervalo de tiempo.

Puede crear una instancia de un nuevo objeto DateTime utilizando el constructor DateTime(). Del mismo modo, puede crear una instancia de un objeto DateInterval utilizando el constructor DateInterval(). Acepta una cadena como su parámetro.  La cadena de intervalo comienza con P, que significa período. Después de eso, puedes especificar cada período utilizando un valor entero y el carácter asignado a un período en particular. Debes consultar la documentación de DateInterval para obtener más detalles.

Este es un ejemplo que ilustra lo fácil que es agregar o restar fechas y horas en PHP.

También puedes comparar fechas en PHP usando operadores de comparación. Esto puede ser útil de vez en cuando. Vamos a crear un contador del día de Navidad usando los operadores de comparación y otros métodos de DateTime.

Comenzamos creando dos objetos DateTime para almacenar la hora actual y la fecha de Navidad de este año. Después de eso, ejecutamos un bucle while para seguir agregando 1 año a la fecha de Navidad de 2018 hasta que la fecha actual sea inferior a la fecha de Navidad.  Esto será útil cuando el código se ejecute el 18 de enero de 2024. El bucle while aumentará la fecha de Navidad siempre y cuando sea menor que la fecha actual en el momento de ejecutar este script.

Nuestro contador de días de Navidad ahora funcionará durante décadas sin problemas.

Pensamientos Finales

En este tutorial, aprendimos cómo generar la fecha y la hora actuales en un formato deseado utilizando la función date(). También vimos que  date() también se puede usar para obtener solo el año actual, el mes, etc.  Después de eso, aprendimos cómo obtener la marca de tiempo actual o convertir una cadena de DateTime válida en una marca de tiempo. Finalmente, aprendimos cómo agregar o restar un período de tiempo de diferentes fechas.

He tratado de cubrir las funciones y los métodos clave de DateTime aquí. Definitivamente, deberías echar un vistazo a la documentación para leer sobre las funciones que no se tratan en el tutorial. Si tienes alguna pregunta, no dudes en hacérmelo saber en los comentarios.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.