Blog de programación, errores, soluciones

Creando y manejando fechas con PHP -date

contenido:

Introducción

En php podemos tanto crear como dar formato a una fecha con la funcion 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. Este segundo parametro hace lo siguiente seria un valor timestamp unix el cual seria la fecha si no se le pasa le pasa este parametro tomara la por defecto el cual usa la función time() esta 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

Explicado esto veamos los formatos para el primer parametro:

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()

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

Veamos unos ejemplos:

<?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?

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á 1ero de 1970 locacion griwich. mas concretamente seria Date (UTC)Jan 1, 1970, 00:00:00

Hagamos 2 ultimos 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()

Ahora bien si yo tengo una fecha como 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 ingles o m/d/y, y-m-d.

hagamos unos ejemplos de strtotime:

echo date("jS F, Y", strtotime("11/12/10"));
echo date("jS F, Y", strtotime("11-12-10")); 

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")); 

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

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.
Last 4 post in same category