Extraer año, mes o día de alguna fecha en PHP

Bienvenido al blog de Parzibyte. Vas a encontrar tutoriales y tips de programación, bases de datos, redes, electrónica e informática general. Ejemplos de código, aplicaciones gratuitas y open source

Extraer año, mes o día de alguna fecha en PHP

Introducción

Las fechas en PHP son una cosa a la que todo programador se enfrenta algún día. Hoy veremos cómo extraer año, mes o día de alguna fecha en PHP. Esto sirve cuando tenemos determinada fecha y queremos conocer únicamente algún dato (mes, día, hora, minutos).

Extraer año, mes o día de alguna fecha en PHP

Representación entera, no como cadena

Como primer paso debemos tener la fecha en formato entero, es decir, que represente los segundos transcurridos desde la fecha Unix.

Si tenemos una fecha como cadena, por ejemplo “2018-07-30T20:55:20” podemos obtener su representación entera con strtotime, así:

$fecha = "2018-07-30T20:55:20";
$fechaComoEntero = strtotime($fecha);

Y si sólo queremos saber la fecha actual, utilizamos la función time que devuelve el tiempo transcurrido desde la época Unix hasta el día de hoy (con segundos y minutos y todo eso).

Una vez que ya tenemos nuestra fecha como entero, es hora de obtener lo que necesitamos.

Formateando para obtener valores

PHP proporciona otra función llamada date que recibe como primer argumento el formato que queremos aplicar a una fecha, y como segundo argumento recibe el tiempo transcurrido desde la época Unix representado como segundos.

Los formatos pueden verse en la documentación oficial, pero aquí sólo vamos a extraer valores.

Obtener o extraer año

Para obtener el año con cuatro dígitos, hacemos esto:

/*
Asumimos que $fechaComoEntero es
como su nombre lo dice una variable entera, que
calculamos con los ejemplos mostrados arriba
*/
$anio = date("Y", $fechaComoEntero);

Lo que da una salida como 2017, 2018, etcétera. Utilizamos la letra Y mayúscula que nos da precisamente el año.

Obtener o extraer mes

/*
Asumimos que $fechaComoEntero es
como su nombre lo dice una variable entera, que
calculamos con los ejemplos mostrados arriba
*/
$mes = date("m", $fechaComoEntero);

En este caso usamos al modificador m. Devuelve un entero desde el 0 hasta el 11. El cero representa a enero y el 11 a diciembre.

Obtener o extraer día

/*
Asumimos que $fechaComoEntero es
como su nombre lo dice una variable entera, que
calculamos con los ejemplos mostrados arriba
*/
$dia = date("d", $fechaComoEntero);

Ahora utilizamos d. Esto regresa un valor entre 1 y el número de días que tenga el mes de la fecha (no es como el del mes que empieza desde cero). Incluye ceros a la izquierda. Por ejemplo 01, 02, etcétera.

Obtener o extraer hora

Para esto utilizamos H así:

/*
Asumimos que $fechaComoEntero es
como su nombre lo dice una variable entera, que
calculamos con los ejemplos mostrados arriba
*/
$hora = date("H", $fechaComoEntero);

La hora es devuelta con valores desde 00 hasta 23. Es decir, las 0 horas son las 12 de la noche y las 23 son las 11 de la noche. Notar por favor que devuelve la hora con ceros a la izquierda.

Minutos y segundos

Para los minutos y segundos utilizamos i y s respectivamente:

/*
Asumimos que $fechaComoEntero es
como su nombre lo dice una variable entera, que
calculamos con los ejemplos mostrados arriba
*/
$minutos = date("i", $fechaComoEntero);
$segundos = date("s", $fechaComoEntero);

Cabe mencionar que ambos valores van de 00 hasta 59 y que son devueltos con ceros a la izquierda.

Ejemplo completo

He aquí un ejemplo completo de la fecha “2018-07-30T20:55:20”:

<?php
$fecha = "2018-07-30T20:55:20";
$fechaEntera = strtotime($fecha);
$anio = date("Y", $fechaEntera);
$mes = date("m", $fechaEntera);
$dia = date("d", $fechaEntera);

$hora = date("H", $fechaEntera);
$minutos = date("i", $fechaEntera);
$segundos = date("s", $fechaEntera);

#Notar que es lo mismo que hacer
# date("Y-m-d H:i:s")

echo "$anio-$mes-$dia $hora:$minutos:$segundos";
?>

La salida es casi la misma fecha, pero esto sólo es para ejemplificar cómo se extrae cada cosa.

Y aquí uno de la fecha actual:

<?php
/*
    Gran nota: cuando llamamos a date y
    no le pasamos el segundo argumento,
    se asume que la fecha es time() por
    lo que...

        $fechaEntera = time();
        $anio = date("Y", $fechaEntera);

    Es lo mismo que...

        $anio = date("Y");
*/
$fechaEntera = time();
$anio = date("Y", $fechaEntera);
$mes = date("m", $fechaEntera);
$dia = date("d", $fechaEntera);

$hora = date("H", $fechaEntera);
$minutos = date("i", $fechaEntera);
$segundos = date("s", $fechaEntera);

#Notar que es lo mismo que hacer
# date("Y-m-d H:i:s")

echo "$anio-$mes-$dia $hora:$minutos:$segundos";
?>

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: