簡體   English   中英

更改日期格式 - Laravel

[英]Changing date format - Laravel

我的表中有一個名為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():無法在 position 0 解析時間字符串 (02-27-2021)

我該如何解決這個問題?

產品 Output

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

我實際上只是建議您停止將日期信息存儲在文本 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 管理這個專欄。 即使有人給你一個答案,它也會很丑陋,工作量很大,也不是最佳實踐。

嘗試使用這個

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

首先提供當前格式

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

如果你的日期字符串是mdY格式,你這個

否則在 mysql 中將varchar更新為date ,因為@tim-biegeleisen 提到使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM