Actualizado el miércoles, 8 mayo, 2024

La biblioteca incorporada de PHP tiene una amplia gama de funciones que ayudan a manejar y manipular la información de fecha y hora mediante programación. Los objetos de fecha y hora en PHP se pueden crear pasando una presentación de cadena de información de fecha / hora, o desde la hora actual del sistema.

PHP proporciona la clase DateTime que define una serie de métodos. En este capítulo, tendremos una visión detallada de los diversos métodos relacionados con la fecha y la hora disponibles en PHP.

Las características de fecha/hora en PHP implementan el calendario ISO 8601, que implementa las reglas actuales de los días bisiestos desde antes de que el calendario gregoriano estuviera en su lugar. La información de fecha y hora se almacena internamente como un número de 64 bits.

Obtener Time Stamp con time()

La función time() de PHP te da toda la información que necesitas sobre la fecha y hora actuales. No requiere argumentos, pero devuelve un número entero.

time():int

El entero devuelto por time() representa el número de segundos transcurridos desde la medianoche GMT del 1 de enero de 1970. Este momento se conoce como la época UNIX, y el número de segundos que han transcurrido desde entonces se conoce como Time Stamp.

<?php
   print time();
?>

Producirá el siguiente resultado:

1699421347

Podemos convertir Time Stamp en una forma con la que los humanos se sientan cómodos.

Convertir Time Stamp con getdate()

La función getdate() acepta opcionalmente una marca de tiempo y devuelve una matriz asociativa que contiene información sobre la fecha. Si omite Time Stamp, funciona con la marca de tiempo actual devuelta por time().

En la tabla siguiente se enumeran los elementos contenidos en el array devuelta por getdate().

Sr.NoKey y DescipciónEjemplo
1secondsSeconds past the minutes (0-59)20
2minutesMinutes past the hour (0 – 59)29
3hoursHours of the day (0 – 23)22
4mdayDay of the month (1 – 31)11
5wdayDay of the week (0 – 6)4
6monMonth of the year (1 – 12)7
7yearYear (4 digits)1997
8ydayDay of year ( 0 – 365 )19
9weekdayDay of the weekThursday
10monthMonth of the yearJanuary
110Timestamp948370048

Ahora tienes control total sobre la fecha y la hora. Puede formatear esta fecha y hora en el formato que desee.

Ejemplo

Echa un vistazo al siguiente ejemplo:

<?php
   $date_array = getdate();

   foreach ( $date_array as $key => $val ){
      print "$key = $val\n";
   }
   $formated_date  = "Today's date: ";
   $formated_date .= $date_array['mday'] . "-";
   $formated_date .= $date_array['mon'] . "-";
   $formated_date .= $date_array['year'];

   print $formated_date;
?>

Producirá el siguiente resultado:

seconds = 0
minutes = 38
hours = 6
mday = 8
wday = 3
mon = 11
year = 2023
yday = 311
weekday = Wednesday
month = November
0 = 1699421880
Today's date: 8-11-2023

Convertir Time Stamp con date()

La función date() devuelve una cadena formateada que representa una fecha. Puede ejercer una enorme cantidad de control sobre el formato que devuelve date() con un argumento de cadena que debe pasarle.

date(string$format,?int$timestamp=null):string

Opcionalmente, date() acepta un Time Stamp, si se omite, se utilizará la fecha y hora actuales. Cualquier otro dato que incluyas en la cadena de formato pasada a date() se incluirá en el valor devuelto.

En la tabla siguiente se enumeran los códigos que puede contener una cadena de formato:

Sr.NoFormato y DescripciónEjemplo
1a‘am’ or ‘pm’ lowercasepm
2A‘AM’ or ‘PM’ uppercasePM
3dDay of month, a number with leading zeroes20
4DDay of week (three letters)Thu
5FMonth nameJanuary
6hHour (12-hour format – leading zeroes)12
7HHour (24-hour format – leading zeroes)22
8gHour (12-hour format – no leading zeroes)12
9GHour (24-hour format – no leading zeroes)22
10iMinutes ( 0 – 59 )23
11jDay of the month (no leading zeroes20
12l (Lower ‘L’)Day of the weekThursday
13LLeap year (‘1’ for yes, ‘0’ for no)1
14mMonth of year (number – leading zeroes)1
15MMonth of year (three letters)Jan
16rThe RFC 2822 formatted dateThu, 21 Dec 2000 16:01:07 +0200
17nMonth of year (number – no leading zeroes)2
18sSeconds of hour20
19UTime stamp948372444
20yYear (two digits)06
21YYear (four digits)2006
22zDay of year (0 – 365)206
23ZOffset in seconds from GMT+5

Ejemplo

Echa un vistazo al siguiente ejemplo:

<?php
   print date("m/d/y G.i:s \n", time()) . PHP_EOL;
   print "Today is ";
   print date("j of F Y, \a\\t g.i a", time());
?>

Producirá el siguiente resultado:

11/08/23 11.23:08

Today is 8 2023f November 2023, at 11.23 am

Espero que tenga una buena comprensión de cómo formatear la fecha y la hora de acuerdo con sus requisitos. Para su referencia, se proporciona una lista completa de todas las funciones de fecha y hora en Funciones de fecha y hora de PHP.