【问题标题】:How to get isoFormat('LL') date with Carbon library but without year in the end?如何使用 Carbon 库获取 isoFormat('LL') 日期但最后没有年份?
【发布时间】:2019-10-30 19:41:37
【问题描述】:

我在我的 laravel 多语言项目中使用 Carbon 库

我想在当前语言环境中正确显示日期,例如:

in 'en' => Thursday, January 5
in 'fr' => jeudi 5 janvier

我目前正在做的是:

1- 我使用 isoFormat('LL') 方法获取日期:January 5, 2017 (for 'en' locale)

2- 使用 substr 删除最后 5 个字符

3- 修剪多余的分号

4 - 在开头添加日期名称

5 - 在日期名称后添加分号(英文正确,法文错误)

所以我的问题是:是否可以使用 Carbon 正确获取这种格式,以及如何获取?

谢谢

【问题讨论】:

    标签: laravel php-carbon


    【解决方案1】:

    1- 将下一行添加到类“AppServiceProvider.php”

    setlocale(LC_TIME, config('app.locale'));
    

    2- 使用下一行来使用格式

    \Carbon\Carbon::now()->formatLocalized('%A, %B  %d')
    

    输出:

    Tuesday, October 29
    

    输出fr:

    mardi, octobre 29
    

    如果您想更改订单格式,请使用以下代码:

     $now = Carbon::now();
     $locale = App::getLocale();
    
     if (App::isLocale('en'))
        echo ($now->formatLocalized('%A, %B  %d')); // en Tuesday, October 29
     elseif(App::isLocale('fr'))
        echo ($now->formatLocalized('%A, %d %B')); // fr mardi, 29 octobre
    
    

    简单的通知

    You also may know formatLocalized() method from Carbon 1. This method still works the same in Carbon 2 but you should better use isoFormat() instead.

    【讨论】:

    • 感谢您的回复。这似乎是一个很好的解决方案,但就我而言,我无法预测该应用程序将支持的所有语言环境。如果 Carbon 可以根据当前的语言环境给出正确格式化的结果会更好。
    • @ALnAc 你是对的,如果你在许多语言环境中工作,那么这太难了,但你可以在这种情况下使用 formatLocalized() 而不改变格式并且字符串自动翻译
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2020-03-02
    • 1970-01-01
    • 2021-12-07
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多