En PHP se puede trabajar con fechas al igual que cualquier otro lenguaje de programación. Esto es muy útil para tener un control en nuestra aplicación web del tiempo.
date()
La función date() nos permite formatear una fecha, ya sea con el día, mes, año, horas, minutos, segundos, día de la semana, etc. Ésta recibirá dos parámetros, el primero será justamente el formato de la fecha que queremos mostrar, y un segundo parámetro opcional que es el timestamp (ya veremos lo qué es eso)
Por ejemplo si quisiéramos devolver el año, mes y día:
<?php
$fecha = date('Y-m-d');
echo $fecha;
?>
Esto nos devolverá por pantalla la fecha en formato en inglés (2013 septiembre 19):
2013-09-19
‘Y’ hace referencia al año (Year en inglés), ‘m’ al mes (month) y ‘d’ al día (day) Pero también podemos formatear el mismo en español:
<?php
$fecha = date('d-m-Y');
echo $fecha;
?>
Entonces el resultado será:
19-09-2013
También podemos recuperar la fecha y la hora:
<?php
$fecha_hora = date('d-m-Y H:i:s');
echo $fecha_hora;
?>
En mi caso, en el momento es que estoy haciendo esto, el resultado que me dio es:
19-09-2013 19:32:26
mktime()
Otra forma de recuperar la fecha y la hora en PHP es en formato timestamp (o marca de tiempo Unix), esto es la cantidad de segundos que va desde de la época Unix (1 de Enero de 1970 a las 00:00:00) hasta el momento en que se llama. Esta función recibirá 6 parámetros: la hora, los minutos, los segundos, el mes, el día y el año (en ese orden):
<?php
$mktime = mktime('19', '50', '02', '09', '19', '2013');
echo $mktime;
?>
Esto nos devolverá por pantalla el valor:
1379631002
Lo que corresponde al 19 de Septiembre del 2013 a las 19:50:02.
Por ejemplo si quisiéramos recuperar la cantidad de segundos que hay desde esa fecha hasta el 19 de Septiembre del 2013 a las 18:50:02:
<?php
$mktime1 = mktime('19', '50', '02', '09', '19', '2013');
$mktime2 = mktime('18', '50', '02', '09', '19', '2013');
$resta = $mktime1 - $mktime2;
echo $resta;
?>
Esto nos devolverá por pantalla:
3600
Que es la diferencia de segundos que hay desde una hora a la otra.
Ahora si quisiéramos devolver la fecha y la hora a través de un valor timestamp deberíamos hacer lo siguiente:
<?php
$fecha = date('d-m-Y H:i:s', 1379631002);
echo $fecha;
?>
Como se ve, esta vez la función date() recibirá un segundo parámetro que es el que le pasará la fecha que deberá formatear.
El resultado será:
19-09-2013 19:50:02
time()
Otra función que nos permitirá devolver un valor de tipo timestamp es time(), en este caso recuperaremos el valor del momento en que la estamos llamando:
<?php
$tiempo = time();
$fecha = date('d-m-Y H:i:s');
echo $tiempo;
echo '<br />';
echo $fecha;
?>
Esto nos devolverá el timestamp y el formato de la fecha, en mi caso:
1379632173 19-09-2013 20:09:33
strtotime()
Hasta ahora hemos pasado fechas timestamp en formato de fecha normal, pero si lo que queremos es hacer la inversa, deberíamos usar la función strtotime() que nos devolverá el valor timestamp:
<?php
$fecha = date('19-09-2013 20:09:33');
$timestamp = strtotime($fecha);
echo $timestamp;
?>
Esto devolverá por pantalla:
1379632173
La función date() no sólo puede devolver la fecha o la hora, para ver los otros tipos de formato disponibles podemos consultar el manual de PHP:
https://php.net/manual/es/function.date.php
Zona horaria
Hasta acá todo muy bonito, cada vez que pedimos una fecha o una hora PHP nos la devuelve, pero, ¿cuál es la hora qué toma? Es decir, cada país, o mejor dicho región, tiene distintos horarios. No es lo mismo la hora actual de Buenos Aires que la de México o Madrid. Si bien nuestro apache probablemente haya tomado la zona de nuestro país si lo probamos en el localhost, si decidimos subir nuestro proyecto a un hosting en donde sus servidores están en Estados Unidos, se tomará la zona horaria de esa región.
Por empezar para ver nuestra zona horaria actual debemos usar la función date_default_timezone_get():
<?php echo date_default_timezone_get(); ?>
En mi caso me ha devuelto:
America/Argentina/Buenos_Aires
Para modificar la zona horaria tendremos que usar la función date_default_timezone_set(), la misma recibirá un parámetro con la zona horaria. Por ejemplo para recuperar la fecha de Argentina:
<?php
date_default_timezone_set('America/Argentina/Buenos_Aires');
$fecha_argentina = date('H:i:s');
echo $fecha_argentina;
?>
Esto me devolverá la hora de Argentina Buenos Aires:
21:12:47
Si en cambio quiero ver la hora de Guatemala, por ejemplo, debería hacer:
<?php
date_default_timezone_set('America/Guatemala');
$fecha_guatemala = date('H:i:s');
echo $fecha_guatemala;
?>
Esto me devolverá obviamente otra hora:
18:13:24
Para ver el listado de zonas horarios podemos visitar la página de PHP:
https://www.php.net/manual/es/timezones.php
checkdate()
Esta función nos mete en un terreno que aun no hemos entrado, las validaciones. Esta función valida que una fecha sea correcta, recibe tres parámetros: mes, día y año, en ese orden. Si la fecha es correcta devolverá true, sino false:
<?php
$dia = 31;
$mes = 11;
$anio = 1986;
if(checkdate($mes, $dia, $anio)){
echo 'La fecha es correcta';
}else{
echo 'La fecha es incorrecta';
}
?>
En este caso la función nos devolverá:
La fecha es incorrecta
Porque obviamente 31 de Noviembre de 1986 no es una fecha correcta, el mes de Noviembre tiene hasta el día 30.
Anterior: Aprendiendo PHP, parte 11: Funciones nativas
Siguiente: Aprendiendo PHP, parte 13: Trabajar con archivos

muy buen material me a servido de mucho a ver si me puedes orientar un poco mas, estoy haciendo qun calculo que me diga los dias entre dos fechas. y que posterior por medio de unas variables me dice cuantos dias le corresponden, ahora bien luego de que me diga los dias que le corresponden, me tome la fecha2 y le sume los dias que le correspondan.
<?php
$dia='12';
$mes='8';
$año='1995';
$fechaingreso=mktime(0,0,0,"08","10","2000");
$fecha2=mktime(0,0,0,"08","10","2009");
$diferencia=$fecha2-$fechaingreso;
$dias=$diferencia/(60*60*24);
if ($dias<=1825) {
echo "30";
$fecha = $dias + 30;
echo $fecha;
}
else
{
if ($dias<=3650) {
echo "33";
}
else
{
if ($dias<=5475) {
echo "39";
}
else
{
if ($dias