【问题标题】:How fix bad date in carbon now() with ->isoFormat(' d MMM Y ')如何使用 ->isoFormat('d MMM Y') 修复 carbon now() 中的错误日期
【发布时间】:2020-03-02 23:02:06
【问题描述】:

我在 laravel 中遇到了问题。

Carbon::now() 工作正常,但我需要使用此代码 ->isoFormat('d MMM Y') 将日期转换为用户友好的格式“2019 年 11 月 6 日”。

但转换后返回值不同的日期(天)。

为什么?什么是坏的?

更新: 知道如何在 laravel 项目的多语言网站中使用它吗?

示例:用户 EN 有 6 nov 2019 用户 CS 有 6 lis 2019 //czech

->isoFormat('d MMM Y') // 有错误的日期,但在 cs 中写“6 lis 2019” ->format('d M Y') // 有正确的日期,但在 cs 中使用英语“2019 年 11 月 6 日”

     <?php
        use Carbon\Carbon;

        $datetime = Carbon::now();
        $newdate = $datetime->isoFormat(' d MMM Y ');

        echo $datetime;  // show 2019-11-06 13:35:49

        echo $newdate;   // show 3 nov 2019

       ?>

【问题讨论】:

  • $datetime-&gt;-&gt;format('d M Y'); 会给你06 Nov 2019
  • 您需要使用createFromFormat。试试吧

标签: php laravel php-carbon


【解决方案1】:

您也可以使用碳Carbon::createFromFormat,如下所示:

$formated_date = Carbon::createFromFormat('d M Y', Carbon::now());
echo $formated_date; 

【讨论】:

    【解决方案2】:

    Carbon 只是一个扩展 DateTime 的类。 使用日期时间! https://www.php.net/manual/en/class.datetime.php

    当你 echo $datetime 时,显然 Carbon 中有一个 __toString() 函数,看起来默认为标准的 Y-m-d H:i:s 格式。

    除了你的格式没有任何问题。

    <?php
    
    $datetime = new DateTime();
    $newdate = $datetime->format(' d M Y ');
    
    echo $datetime->format('Y-m-d H:i:s');  // shows 2019-11-06 13:35:49
    
    echo $newdate;   // shows 6 Nov 2019
    

    【讨论】:

      【解决方案3】:

      $newdate = $datetime-&gt;format('d M Y'); 怎么样

      输出为06 Nov 2019

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        • 2021-05-07
        • 2018-05-25
        • 1970-01-01
        相关资源
        最近更新 更多