Traducción de fechas en Laravel con la Libreria DATE
- Publicado el 09 agosto, 2024
- Palabras: 519
Esta librería de fechas amplía Carbon con compatibilidad con varios idiomas. Los métodos como format, diffForHumans, parse, createFromFormat y el nuevo timespan ahora se traducirán según la configuración regional.
Todas las traducciones realizadas por los colaboradores se han trasladado al paquete Carbon 2. Este paquete utiliza ahora las traducciones de Carbon para ofrecerle un mejor soporte multilingüe. Los problemas de traducción deben notificarse en el repositorio de Carbon. También puede consultar la documentación original aquí.
#Installación
Se instala como cualquier componente de laravel mediante composer:
composer require jenssegers/date
#Laravel
Hay un proveedor de servicios incluido para la integración con el framework Laravel. Este proveedor obtendrá la configuración regional de la aplicación y la usará para las traducciones. Este servicio se registrará automáticamente si usa Laravel 5.5+ mediante el descubrimiento automático. De lo contrario, para registrar el proveedor de servicios, agregue lo siguiente a la matriz de proveedores en config/app.php:
JenssegersDateDateServiceProvider::class,
También puedes añadirlo como una fachada en config/app.php:
'Date' => JenssegersDateDate::class,
#Idiomas soportados
Aquí tienes un listado de los idiomas soportados: https://github.com/jenssegers/date?tab=readme-ov-file#languages
#Uso
La clase Date extiende los métodos Carbon como format y diffForHumans, y los traduce según su configuración regional:
use Jenssegers\Date\Date;
Date::setLocale('nl');
echo Date::now()->format('l j F Y H:i:s'); // zondag 28 april 2013 21:58:16
echo Date::parse('-1 day')->diffForHumans(); // 1 dag geleden
La clase Date también agregó algunos alias y métodos adicionales como: ago, que es un alias para diffForHumans, y el método timespan:
echo $date->timespan(); // 3 months, 1 week, 1 day, 3 hours, 20 minutes
Los métodos como parse y createFromFormat también admiten "traducciones inversas". Al llamar a estos métodos con una entrada traducida, intentará traducirla al inglés antes de pasarla a DateTime:
$date = Date::createFromFormat('l d F Y', 'zaterdag 21 maart 2015');
#Carbon
Carbon es la biblioteca en la que se basa la clase Date. Todas las operaciones originales de Carbon siguen estando disponibles, consulta https://carbon.nesbot.com/docs para más información. Estos son algunos de los métodos disponibles:
Creación de fechas
Puede crear objetos Date al igual que el objeto DateTime (http://www.php.net/manual/en/datetime.construct.php):
$date = new Date();
$date = new Date('2000-01-31');
$date = new Date('2000-01-31 12:00:00');
// With time zone
$date = new Date('2000-01-31', new DateTimeZone('Europe/Brussels'));
Puedes omitir la creación de un objeto DateTimeZone:
$date = new Date('2000-01-31', 'Europe/Brussels');
Crear objetos de fecha a partir de un formato relativo (http://www.php.net/manual/en/datetime.formats.relative.php):
$date = new Date('now');
$date = new Date('today');
$date = new Date('+1 hour');
$date = new Date('next monday');
Esto también está disponible mediante estos métodos estáticos:
$date = Date::parse('now');
$date = Date::now();
Creación de una fecha a partir de una marca de tiempo:
$date = new Date(1367186296);
O desde una fecha u hora existente:
$date = Date::createFromDate(2000, 1, 31);
$date = Date::createFromTime(12, 0, 0);
$date = Date::create(2000, 1, 31, 12, 0, 0);
#Formateando fechas
Puede formatear un objeto Date como el objeto DateTime (http://www.php.net/manual/en/function.date.php):
echo Date::now()->format('Y-m-d'); // 2000-01-31
El objeto Date puede ser convertido en una cadena:
echo Date::now(); // 2000-01-31 12:00:00
Ten una salida legible para humanos (alias para diffForHumans):
echo $date->ago(); // 5 days ago
Calcule un intevarlo de tiempo:
$date = new Date('+1000 days');
echo Date::now()->timespan($date);
// 2 years, 8 months, 3 weeks, 5 days
// or even
echo Date::now()->timespan('+1000 days');
Obtenga los años desde la fecha:
$date = new Date('-10 years');
echo $date->age; // 10
$date = new Date('+10 years');
echo $date->age; // -10
Manipulación de fechas
Se puede manipular utilizando los métodos add y sub, con intervalos relativos (http://www.php.net/manual/en/datetime.formats.relative.php):
$yesterday = Date::now()->sub('1 day');
$tomorrow = Date::now()->add('1 day');
// ISO 8601
$date = Date::now()->add('P2Y4DT6H8M');
Puedes acceder y modificar todos los atributos de la fecha como un objeto:
$date->year = 2013:
$date->month = 1;
$date->day = 31;
$date->hour = 12;
$date->minute = 0;
$date->second = 0;
Contribución
Las contribuciones lingüísticas deben hacerse a https://github.com/briannesbitt/Carbon.
Toda la información acerca del paquete en aquí
Antonio Jenaro
Web Developer
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión