TransWikia.com

Obtener nombre de mes en Español (Laravel, Carbon)

Stack Overflow en español Asked by C47 on January 22, 2021

Alguien sabe como obtener el nombre del mes de una fecha en español utilizando Carbon y Laravel.

Actualmente uso:

$fecha = CarbonCarbon::parse($data["Fecha"])
$mes = $fecha->format("F");

Pero me devuelve el nombre del mes en inglés

También he probado con esto

6 Answers

Creo que la solución mas factible es esta:

No me funciona las opciones que uds. me brindaron, y realmente urge.

$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$fecha = Carbon::parse($inputs['Fecha']);
$mes = $meses[($fecha->format('n')) - 1];
$inputs['Fecha'] = $fecha->format('d') . ' de ' . $mes . ' de ' . $fecha->format('Y');

Correct answer by C47 on January 22, 2021

Yo lo solucione agregando en el AppServiceProvider

public function boot()
{
    // Configuración para fechas en español
    Carbon::setUTF8(true);
    Carbon::setLocale(config('app.locale'));
    setlocale(LC_ALL, 'es_MX', 'es', 'ES', 'es_MX.utf8');

}

Carbon::setLocale establece el lenguaje para diffForHumans()

setlocale establece el lenguaje para formatLocalized('%B') pero solo funciona si en el servidor esta instalada alguna de las localizaciones listadas. En el caso de Ubuntu 18.04 se instala el lenguaje 'es_MX.utf8' Guia para instalar lenguajes en linux

Answered by Saúl Delgadillo R on January 22, 2021

Para que funcione en español tienes que poner lo siguiente en AppServiceProvider.php.

En la funcion boot:

    Public function boot()
    {
      Carbon::setUTF8(true);
      Carbon::setLocale(config('app.locale'));
      setlocale(LC_TIME, config('app.locale'));
    }

Para probar en tu vista puedes hacer lo siguiente:

    {{ $date = CarbonCarbon::now()}}
    {{$date->formatLocalized('%B')}} //nombre del mes actual

Recuerda colocar tu idioma en config/app.php lo siguiente:

'locale' => 'es',

Answered by Jonathan Teran on January 22, 2021

Ya se que es demasiado tarde intenté de todo como tú y al final di con varias cosillas una es tener el locale en el idioma que quieres checa app.php locale es

luego en AppServiceProvider.php

añadí esto en la función boot Carbon::setLocale(config('app.locale'));

ya después en mi controller

$fecha = Carbon::parse($fSalida);
$date = $fecha->locale(); //con esto revise que el lenguaje fuera es 
dd($fecha->monthName); //y con esta obtengo el mes al fin en español!

Answered by Alejandra on January 22, 2021

Carbon usa el método estático setLocale solo para algunos de sus métodos como diffForHumans() más no para format , es decir

Carbon::setLocale('es');
$fecha = Carbon::parse('03-04-2018');
$fecha->diffForHumans(); //esto se mostrará en español
$fecha->format("F"); // Inglés.

Para realizar el formato debe hacer eso de setLocale de la siguiente forma, pero el método format seguirá en el mismo idioma, en su lugar debería utilizar el método formatLocalized que hace uso de strftime además de añadir el .formato que desee (%B para el nombre del mes)

setlocale(LC_ALL, 'es_ES');
$fecha = Carbon::parse('03-04-2018');
$fecha->format("F"); // Inglés.
$mes = $fecha->formatLocalized('%B');// mes en idioma español

además puede revisar el siguiente paquete Jenssegers/date para manejar idioma en fechas con Laravel.

Answered by Dev. Joel on January 22, 2021

Hola prueba con lo siguiente:

setlocale(LC_ALL,"es_ES"); 
CarbonCarbon::setLocale('es'); 
$fecha = CarbonCarbon::parse($data["Fecha"])
$mes = $fecha->format("F");

Ojo: Si tienes un archivo de configuración, trata de llamar el método setlocale desde allí.

Answered by diego orellana on January 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP