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.

Traducción de fechas en Laravel con la Libreria DATE

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

Antonio Jenaro

Web Developer

Archivado en:

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión