【问题标题】:Changing date format - Laravel更改日期格式 - Laravel
【发布时间】:2021-03-09 10:20:22
【问题描述】:

我的表中有一个名为expiry 的列,其类型为VARCHAR。在该列中,混合了日期格式,例如 YYYY-MM-DDMM-DD-YYYY

如何在我的 laravel 视图刀片中将格式 MM-DD-YYYY 重新排列为 YYYY-MM-DD

查看

 @foreach($product_select as $key => $product)
   <tr>
   <td>{{$product->name}}</td>
   <td>{{\Carbon\Carbon::parse($product->expiry)->isoFormat('YYYY MM DD')}}</td>
   </tr>
   @endforeach

在上面的视图中,它抛出了一个错误

无法解析“02-27-2021”:DateTime::__construct():无法解析位置 0 处的时间字符串 (02-27-2021)

我该如何解决这个问题?

产品输出

{#3504 ▼
  +"product_id": "999"
  +"id": 999
  +"name": "CONFIDO    CONFIDO TABS 60'S HIMALAYA"
  +"code": "P935"
  +"expiry": "03-31-2023"
  +"type": "standard"
}

【问题讨论】:

  • @Droid,我已经用输出更新了问题
  • 好吧,Carbon 无法准确猜测您是否使用一种格式或另一种格式。您必须明确或将格式转换为可解析的格式。
  • 试试这个{{ \Carbon\Carbon::createFromFormat('m-d-Y', $product-&gt;expiry')-&gt;Format('Y m d')}}

标签: php laravel


【解决方案1】:

我实际上只是建议您停止将日期信息存储在文本 varchar 列中。相反,您应该使用正确的 MySQL 日期列。以下是您可以从 MySQL 纠正这种情况的方法:

ALTER TABLE product ADD COLUMN new_expiry DATE;

UPDATE product
SET new_expiry = CASE WHEN expiry REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$'
                      THEN CAST(expiry AS DATE)
                      ELSE STR_TO_DATE(expiry, '%m-%d-%Y') END;

ALTER TABLE product DROP COLUMN expiry;
ALTER TABLE product RENAME COLUMN new_expiry TO expiry;

我什至不会费心尝试从 Laravel 管理这个专栏。即使有人给你一个答案,它也会很丑陋,工作量很大,而且也不是最佳实践。

【讨论】:

    【解决方案2】:

    试试这个

    {{ \Carbon\Carbon::parse($product->expiry)->format('YYYY MM DD')}}
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    【解决方案3】:

    首先提供当前格式

    {{ \Carbon\Carbon::createFromFormat("m-d-Y", $product->expiry)->toDateString(); 
    

    【讨论】:

      【解决方案4】:

      如果你的日期字符串是 m-d-Y 格式,你这个

      如果@tim-biegeleisen 提到使用它,请在 mysql 中将 varchar 更新为 date

      {{ \Carbon\Carbon::createFromFormat('m-d-Y', $product->expiry')->isoFormat('YYYY MM DD')}}
      

      【讨论】:

        猜你喜欢
        • 2017-08-29
        • 2016-09-05
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 2011-06-05
        • 2016-11-22
        相关资源
        最近更新 更多