PHP strtotime小BUG

程序猿 2021-07-31 16:37:11 1806瀏覽 加載中

今天看網(wǎng)站統(tǒng)計(jì)發(fā)現(xiàn)上月和這月的數(shù)據(jù)一樣。用的whereMonth 時(shí)間查詢

->whereMonth('create_time')  // 本月
->whereMonth('create_time','last month')  // 上月

看著代碼沒啥問題,往上翻找到了

        if (in_array($month, ['this month', 'last month'])) {
            $month = date('Y-m', strtotime($month));
        }

于是打印了

dump(date("Y-m-d",strtotime("this month")));
dump(date('Y-m-d', strtotime("last month")));

結(jié)果

^ "2021-07-31"
^ "2021-07-01"

這不是同一月么。這是strtotime函數(shù)的BUG吧。在31號(hào)的時(shí)候返回不到上一月。

在網(wǎng)上巴拉巴拉,發(fā)現(xiàn)可以這樣寫

dump(date("Y-m-d",strtotime("first day of this month")));
dump(date('Y-m-d', strtotime("first day of last month")));

結(jié)果

^ "2021-07-01"
^ "2021-06-01"

這樣就能返回到上一個(gè)月了。

標(biāo)簽:
最后修改:2025-04-04 10:23:13

非特殊說(shuō)明,本博所有文章均為博主原創(chuàng)。

国产免费久久受久久,人妻AV成熟片久久久久久,亚洲综合无码日韩,国产AV无码乱码精品国产 www.sucaiwu.net