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).
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í:
<?php
$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.
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.
Para obtener el año con cuatro dígitos, hacemos esto:
<?php
/*
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.
<?php
/*
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.
<?php
/*
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).
El valor regresado incluye ceros a la izquierda. Por ejemplo 01, 02, etcétera.
Para esto utilizamos H así:
<?php
/*
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.
Para los minutos y segundos utilizamos i
y s
respectivamente:
<?php
/*
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.
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";
?>
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Si quiero tomar la fecha guardada en una base de datos, y no tomar la actual o predefinir una, como lo hago?
Ejemplo del controller{
$articulos = DB::table('articulos')
->select('articulos.titulo','articulos.autorEs','articulos.fecha','articulos.volumen','articulos.nombreRevista','articulos.dePagina','articulos.aPagina','articulos.nombreEvidencia','t.nombreTipoArticulo')
->join('tipoarticulos as t','articulos.tipoarticulo_id','=','t.id')
->where('articulos.activo','=',1)
->where('articulos.estadoLogico','=',1)
->get();
return view('Produccion.Articulos',compact('articulos'));
}
ejemplo del blade{
{{$datos_articulos->autorEs}}, {{$datos_articulos->fecha}}, {{$datos_articulos->titulo}}, {{$datos_articulos->nombreRevista}}, vol({{$datos_articulos->volumen}}), pp({{$datos_articulos->dePagina}} - {{$datos_articulos->aPagina}})
}
Hola. Para consultas personalizadas puede contactarme en https://parzibyte.me#contacto
Saludos :)
¡Muchas gracias! Si me funcionó