[英]Last day of next month in PHP or Laravel
當我嘗試通過 PHP 或 Laravel 碳獲取下個月的最后一天時,一切正常,但是當我嘗試從特定日期 2023-01-31 獲取下個月的最后一天時,通過
date('Y-m-01', strtotime('next month', strtotime('2023-01-31')));
或者
Carbon::createFromFormat('Y-m-d H:m:00:000', '2023-01-31')->addMonth()->format('Y-m-t H:m:00:000');
那個時候output結果是2023-03-31給出的,但是下個月的最后一天是2023-02-28。 那么我該如何解決呢? 它無法正常工作。
$instituter = Institute::where('code', $instInfo->institute_code)->first();
// $institute = Carbon::createFromFormat('Y-m-d H:m:00:000', $institute->institute_expire)->addMonth()->format('Y-m-d H:m:00:000');
// $expire = $instituter->institute_expire;
// $inst = Carbon::createFromFormat('Y-m-d H:i:00.000', $instituter->institute_expire)->addMonths(6)->startOfMonth()->format('Y-m-d');
$inst = date('Y-m-01', strtotime('next month', strtotime($instituter->institute_expire)));
// $inst = Carbon::createFromFormat('Y-m-d H:i:00.000', $instituter->institute_expire)->addMonths(6)->startOfMonth();
// $institute = Carbon::createFromFormat('m/d/Y', $instituter->institute_expire)->addMonth();
嘗試以下操作。
$date = Carbon::createFromFormat('Y-m-d', '2023-01-31');
$nextMonth = $date->modify('Last Day of Next Month');
echo $nextMonth->format('Y-m-d');
這將是 output 2023-02-28
。
日期以字符串形式給出。
$strDate = '2023-01-15';
基於此日期,將為下個月的最后一天創建日期 object。 使用 DateTime,這可以在一行中完成。
$lastDdayOfNextMonth = date_create('last day of next month '.$strDate);
Carbon 是 DateTime 的擴展。 因此這也適用:
$lastDdayOfNextMonth = Carbon::create('last day of next month '.$strDate);
echo $lastDdayOfNextMonth->format('c');
//2023-02-28T00:00:00+01:00
如果日期已經作為 object 存在,那就更容易了。
$dt = new DateTime('2023-01-15');
$lastDdayOfNextMonth = $dt->modify('last day of next month');
這再次與碳完全相同。
$dt = new Carbon('2023-01-15');
$lastDdayOfNextMonth = $dt->modify('last day of next month');
提防帶有 Carbon 的 addMonth() 解決方案或 DateTime 的“下個月”解決方案。 與問題一樣,舊版本也會返回日期“2023-01-31”的錯誤結果。 Carbon 有一個特殊的方法來添加“沒有溢出”的月份: addMonthsNoOverflow()
$endOfNextMonth = Carbon::create('2023-01-31')
->addMonthsNoOverflow(1)
->endOfMonth()
;
echo $endOfNextMonth; //2023-02-28 23:59:59
從 Laravel 5.5 開始,您可以使用 now() function 獲取當前日期和時間,您可以使用以下方法獲取下個月的最后一個日期:
now()->addMonth()->endOfMonth();
如果你想格式化為 Ymd
now()->addMonth()->endOfMonth()->format('Y-m-d');
或者如果你只想獲得日期更改格式 $now->format('d');
如果您使用的是 laravel 版本低於 5.5 使用上述功能作為
\Carbon\Carbon::now()->addMonth()->endOfMonth();
strtotime 會這樣做...
例如
echo date('c', strtotime('last day of next month'));
給出例如 2023-02-28T19:53:34+00:00,而今天是 2023/01/21。
或者 -
ècho (new DateTime('last day of next month'))->format('c')
也會工作
$next_month_last_date = date("Y-m-t", strtotime("+1 month"));
t => 該月的天數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.