[英]Laravel: display difference between two dates in blade
我想知道是否有可能在不使用Carbon的情況下在刀片視圖中顯示系統日期與數據庫記錄之間的日期格式($ ticket-> start_date)的差異。
例如(我知道,它不起作用)
<td>{{ diff(date('Y-m-d'), strtotime($ticket->start_date))}}</td>
功能
date_diff()
參量
有兩個參數。
您需要將DateTmime
對象傳遞給那些參數。
退貨
該函數返回一個DateInterval
對象。
您可以使用format()
函數設置DateInterval
對象的format()
。
例
<td>{{ date_diff(new \DateTime($ticket->start_date), new \DateTime())->format("%m Months, %d days"); }}</td>
您可以在此format()
字符串中輸入任何內容。
此示例格式返回類似"9 Months, 18 days"
DateInterval對象
這是DateInterval
對象的示例。
您可以通過以下發布的format()
函數訪問這些屬性。
interval: + 9m 18d 02:27:21.488037
+"y": 0
+"m": 9
+"d": 18
+"h": 2
+"i": 27
+"s": 21
+"f": 0.488037
+"weekday": 0
+"weekday_behavior": 0
+"first_last_day_of": 0
+"invert": 0
+"days": 291
+"special_type": 0
+"special_amount": 0
+"have_weekday_relative": 0
+"have_special_relative": 0
您在這里有兩個獨立的問題:
第一:如何區分兩個日期。 您可以在這里選擇高科技或低端技術。 如果您不想使用Carbon,我建議您采用低技術含量:
<?php
// Note, this gives you a timestamp, i.e. seconds since the Epoch.
$ticketTime = strtotime($ticket->start_date);
// This difference is in seconds.
$difference = $ticketTime - time();
在這一點上,您必須決定如何輸出差異。 馬上? 在幾個小時內?
Difference: {{ $difference }} seconds
Difference: {{ round($difference / 3600) }} hours
Difference: {{ round($difference / 86400) }} days
如果您想要像Carbon::diffForHumans()
這樣漂亮的東西,就必須做額外的工程。
第二:這現在成為您的問題,對於您的前端來說這是否太多代碼了。 顯然,您可以將以上所有內容簡化為PHP的單一代碼,但您的同事可能不會意識到它變得多么難以理解:
{{ round((strtotime($ticket->start_date) - time()) / 3600) }} hours
注意事項
使用時間戳避免了處理時區的問題。 對於一堆用例,這就足夠了; 對於其他人來說,這是遠遠不夠的。 但是,如果您想處理時區,使用Carbon無疑會更好,它比使用PHP的DateTime更好,但取決於您。
請使用laravel的Carbonlib。 https://carbon.nesbot.com/docs/#api-difference
dd( \Carbon\Carbon::now()->diff( \Carbon\Carbon::parse('your db datetime') ) );
例:
dd( \Carbon\Carbon::now()->diff( \Carbon\Carbon::parse('2019-12-12 00:00:00') ) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.