[英]Changing date format - Laravel
我的表中有一個名為expiry
的列,其類型為 VARCHAR。 在該列中,混合了日期格式,例如YYYY-MM-DD和MM-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.