如果日期是一個月的最后一天,我想得到下個月的最后一天。我不想改變時間。
Original date -> 2022-31-01 14:00:00
I need -> 2022-28-02 14:00:00
Original date -> 2022-28-02 14:00:00
I need -> 2022-31-03 14:00:00
uj5u.com熱心網友回復:
$date->lastOfMonth()$date回傳'?? 月的最后一天。$date->isLastOfMonth()$date如果是該月的最后一天,則回傳 true 。
假設$date是一個Carbon實體,那么它只是使用幾個函式和一個三元運算子的問題。
$result = $date->isLastOfMonth()
? $date->addDays(1)->lastOfMonth()
: $date;
要保留日期的時間部分,您需要先創建一個間隔,然后再添加。
$interval = $date->diffAsCarbonInterval($date->startOfDay());
$result = $date->isLastOfMonth()
? $date->addDays(1)->lastOfMonth()->add($interval)
: $date;
uj5u.com熱心網友回復:
@IGP 的答案是正確的,但是;
$date->startOfDay()-> 更改您的原始日期。
你應該使用$date->copy()->startOfDay()
uj5u.com熱心網友回復:
Carbon 是 DateTime 的擴展。但是,這里不需要 Carbon,因為有一個使用 DateTime 的非常簡單的解決方案。只需檢查日期 (d) 的日期是否與月份的最后一天 (t) 匹配。如果是,則修改為下個月的最后一天。時間不受影響。
$dt = new DateTime('2022-01-31 14:00:00');
if($dt->format('d') == $dt->format('t')){
$dt->modify('last Day of next month');
}
//test output
echo $dt->format('Y-m-d H:i:s')."\n";
嘗試自我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440224.html
上一篇:碳日期在資料庫中保存為字串
