Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Creando y manejando fechas con PHP -date

A continuación veremos como usar la función date de PHP y como darle formato a esta para ser mostrada.

contenido:

Introducción

https://blastcoding.com/creando-y-manejando-fechas-con-php-date/#introduccion

En PHP podemos tanto crear como dar formato a una fecha con la función date().

Su sintaxis es la siguiente:

date ( string $format [, int $timestamp = time() ] ) : string

Cómo puede ver en la función date tenemos 2 parámetros 1 opcional y nos retorna un string de regreso.

$format define el formato que tendrá nuestra fecha, por ejemplo día-mes-año

$timestamp sería un valor timestamp UNIX el cual es la fecha, si no se le pasa este parámetro tomará el valor por defecto el cual usa la función time().

La función time() devuelve el valor actual de la fecha UNIX, tome en cuenta que esta fecha no es la fecha de su usuario, es la fecha del servidor.

Formatos

https://blastcoding.com/creando-y-manejando-fechas-con-php-date/#formatos

Explicado esto veamos los formatos para el primer parámetro:

Carácter de formatDescripciónEjemplo de valores devueltos
Día
dDía del mes, 2 dígitos con ceros iniciales01 a 31
DUna representación textual de un día, tres letrasMon hasta Sun
jDía del mes sin ceros iniciales1 a 31
l (‘L’ minúscula)Una representación textual completa del día de la semanaSunday hasta Saturday
NRepresentación numérica ISO-8601 del día de la semana (añadido en PHP 5.1.0)1 (para lunes) hasta 7 (para domingo)
SSufijo ordinal inglés para el día del mes, 2 caracteres st, nd, rd o th. Funciona bien con j
wRepresentación numérica del día de la semana0 (para domingo) hasta 6 (para sábado)
zEl día del año (comenzando por 0)0 hasta 365
Semana
WNúmero de la semana del año ISO-8601, las semanas comienzan en lunesEjemplo: 42 (la 42ª semana del año)
Mes
FUna representación textual completa de un mes, como January o MarchJanuary hasta December
mRepresentación numérica de una mes, con ceros iniciales01 hasta 12
MUna representación textual corta de un mes, tres letrasJan hasta Dec
nRepresentación numérica de un mes, sin ceros iniciales1 hasta 12
tNúmero de días del mes dado28 hasta 31
Año
LSi es un año bisiesto1 si es bisiesto, 0 si no.
oAño según el número de la semana ISO-8601. Esto tiene el mismo valor que Y, excepto que si el número de la semana ISO (W) pertenece al año anterior o siguiente, se usa ese año en su lugar. (añadido en PHP 5.1.0)Ejemplos: 1999 o 2003
YUna representación numérica completa de un año, 4 dígitosEjemplos: 1999 o 2003
yUna representación de dos dígitos de un añoEjemplos: 99 o 03
Hora
aAnte meridiem y Post meridiem en minúsculasam o pm
AAnte meridiem y Post meridiem en mayúsculasAM o PM
BHora Internet000 hasta 999
gFormato de 12 horas de una hora sin ceros iniciales1 hasta 12
GFormato de 24 horas de una hora sin ceros iniciales0 hasta 23
hFormato de 12 horas de una hora con ceros iniciales01 hasta 12
HFormato de 24 horas de una hora con ceros iniciales00 hasta 23
iMinutos con ceros iniciales00 hasta 59
sSegundos con ceros iniciales00 hasta 59
u Microsegundos (añadido en PHP 5.2.2). Observe que date() siempre generará 000000 ya que toma un parámetro de tipo integer , mientras que DateTime::format() admite microsegundos si DateTime fue creado con microsegundos. Ejemplo: 654321
v Milisegundos (añadido en PHP 7.0.0). La misma observación se aplica para u. Example: 654
Zona Horaria
eIdentificador de zona horaria (añadido en PHP 5.1.0)Ejemplos: UTC, GMT, Atlantic/Azores
I (i mayúscula)Si la fecha está en horario de verano o no1 si está en horario de verano, 0 si no.
ODiferencia de la hora de Greenwich (GMT) en horasEjemplo: +0200
PDiferencia con la hora de Greenwich (GMT) con dos puntos entre horas y minutos (añadido en PHP 5.1.3)Ejemplo: +02:00
TAbreviatura de la zona horariaEjemplos: EST, MDT
ZÍndice de la zona horaria en segundos. El índice para zonas horarias al oeste de UTC siempre es negativo, y para aquellas al este de UTC es siempre positivo.-43200 hasta 50400
Fecha/Hora Completa
cFecha ISO 8601 (añadido en PHP 5)2004-02-12T15:19:21+00:00
rFecha con formato » RFC 2822Ejemplo: Thu, 21 Dec 2000 16:01:07 +0200
USegundos desde la Época Unix (1 de Enero del 1970 00:00:00 GMT)Vea también time()

Ejemplo de uso de Formatos

La tabla anterior es tal cual una referencia a la tabla que hay en la página de PHP.

Ejemplos de la función date()
<?php

echo "<h1>Ejemplos con date</h1>";

echo "<p>con formato dia mes año</p>";
echo date("d-m-y");
echo "</br>";
echo date("d-m-Y");
echo "<p>Un ejemplo con timestamp:</p>";
echo date("d-m-Y",0);
echo "<h2>Manejando horarios</h2>";
echo "<p>hora de ahora</p>";
echo "<p>Horas de 0 a 23</p>";
echo date("H:i:s");
echo "<p>Horas de 0 a 12</p>";
echo date("h:i:s");
echo "<p>Algo más complejo</p>";
echo date("l d, F Y H:i:s");
 ?>

Como puede ver tanto el ., , -, /, el espacio nos dice como estará separado el formato. Un ejemplo más para hacer esto más evidente:

echo date("l:. d:. F:. Y:.");

¿Qué es el Timestamp?

https://blastcoding.com/creando-y-manejando-fechas-con-php-date/#timestamp

Antes de terminar el tema de la función date vea que en el ejemplo en el que le paso la fecha timestamp nos dará la fecha 31-12-1969.

Esto es el tiempo UNIX:

Tiempo Unix o Tiempo POSIX es un sistema para la descripción de instantes de tiempo: se define como la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970

wikipedia

En otras palabras, la primera fecha será 1.º de 1970 locación griwich. Más concretamente seria Date (UTC)Jan 1, 1970, 00:00:00

Hagamos 2 últimos ejemplo con esta fecha.

echo date("d-m-Y H:i:s",0);
echo date("d-m-Y H:i:s",1);

Porque el ejemplo no da el día correcto, pues eso depende de la zona horaria, si le ponemos que sea la zona horaria de Londres nos debería dar la fecha correcta.

Esto lo podemos hacer con la función date_default_timezone_set('UTC');

date_default_timezone_set('UTC');

Utilizando strtotime()

https://blastcoding.com/creando-y-manejando-fechas-con-php-date/#strtotime

Ahora bien, si yo tengo una fecha siendo un string ¿cómo puedo pasársela a la función date? Obviamente, no me voy a poner a calcular el timestamp para pasarlo.

La función strtotime() nos permite pasarle una fecha en string y pasarla a timestamp (int). El formato que se le debe pasar a esta función es en inglés o "m/d/y", "y-m-d".

hagamos unos ejemplos de strtotime():

echo date("jS F, Y", strtotime("11/12/10"))."\n";
echo date("jS F, Y", strtotime("11-12-10")); 
12th November, 2010
10th December, 2011

Otras cosas interesantes que podemos hacer con strtotime es pasarle un string q sea "+2 month" por ejemplo.

Incluso se le podría pasar una fecha + otra por ejemplo "10/10/10 +1 day" o un "next monday" ambas deberían funcionar.

echo date("jS F, Y", strtotime("10/10/10 +1 day")); 
11th October, 2010

Por último quiero dejar en claro que hay librerias las cuales pueden ayudar mucho con el manejo de fechas como por ejemplo Carbon la cual la puede encontrar en packagist.org

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category