亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP dateTime 上個月的 12 月 31 日是錯誤的

PHP dateTime 上個月的 12 月 31 日是錯誤的

PHP
呼喚遠方 2022-07-16 18:13:48
我有這個:$previousMonth = new DateTime('2019-12-31'); $previousMonth->modify('-1 month');我的理解是“-1 月”應該修改對象,無論該月有多少天,還是?當然,我應該得到或期望得到的是 11 月底(2019-11-30),但我得到的是 12 月初(同月)。順便說一句,如果我將日期更改為“2019-12-30”(前一天),那么它將是 11 月底。如果我最初的假設不正確,那么可靠計算上個月的最佳替代方案是什么?有什么想法嗎?
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

在 php 中獲取最后一個月的最簡單和最簡單的方法是

$previousMonth = date("Y-n-j", strtotime("last day of previous month"));

與其他線程上建議的相同在 php 中獲取上個月的日期


查看完整回答
反對 回復 2022-07-16
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

$date = "2019-12-31 00:00:00";
echo date('Y-m-d', strtotime($date . '-1month'));

這將打印出 2019-12-01,因為 31/11 不存在。

以下內容不能回答您的問題,但將來可能會有所幫助。我喜歡在處理日期時使用 Carbon。你的問題可以很簡單地解決。

https://carbon.nesbot.com/

它功能多,使用極其簡單,可以用 Composer 安裝。


查看完整回答
反對 回復 2022-07-16
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

要獲取上個月的最后一天,您可以獲取當月的第一天并減去 1 秒或 1 天:


$previousMonth = new DateTime('2019-12-31');

$previousMonth->modify($previousMonth->format('Y-m-01')); // date is 2019-12-01 00:00:00

$previousMonth->modify('-1 sec');

echo $previousMonth->format('Y-m-d H:i:s') . PHP_EOL; // Outputs 2019-11-30 23:59:59


$previousMonth->modify('+1 sec'); // set back the original date 2019-12-01 00:00:00

$previousMonth->modify('-1 day');

echo $previousMonth->format('Y-m-d H:i:s'); // Outputs 2019-11-30 00:00:00


查看完整回答
反對 回復 2022-07-16
  • 3 回答
  • 0 關注
  • 222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號