麻豆国产一级av,国产小可爱平台视频在线,精品丰满人妻无套内射,日本综合精品亚洲

宏博網(wǎng)絡(luò) | 專注互聯(lián)網(wǎng)品牌一站式服務(wù)

Thank you for visiting

029-81773686

全網(wǎng)開發(fā)&整合營(yíng)銷服務(wù)商

CopyRight
?HOOBOO All rights reserved

全網(wǎng)開發(fā)&整合營(yíng)銷服務(wù)商

029-81773686

網(wǎng)站建設(shè):PHP關(guān)于strtotime函數(shù)的BUG問(wèn)題與解決方案

2020.09.11

PHP關(guān)于strtotime函數(shù)的BUG問(wèn)題與解決方案

最近使用了strtotime結(jié)合-1 month, +1 month, next month獲取上個(gè)月或者下個(gè)月的日期,不過(guò)剛看到一篇文章,才知道原來(lái)使用strtotime直接獲取日期還是有點(diǎn)小BUG


如日期:

$today = '2020-10-31';

var_dump( date("Y-m-d",strtotime("$today -1 month")) ); // 輸出:2020-10-01

根據(jù)上面的輸出可以看出來(lái),輸出的還是2020年10月


分析:


先做-1 month, 那么當(dāng)前是07-31, 減去一以后就是06-31.


再做日期規(guī)范化, 因?yàn)?月沒有31號(hào), 所以就好像2點(diǎn)60等于3點(diǎn)一樣, 6月31就等于了7月1


是不是邏輯很“清晰”呢? 再舉個(gè)例子 比如:


var_dump( date("Y-m-d", strtotime("2020-12-31")) ); // 輸出2020-12-01




也就是說(shuō), 只要涉及到大小月的最后一天, 都可能會(huì)有這個(gè)迷惑, 我們也可以很輕松的驗(yàn)證類似的其他月份, 印證這個(gè)結(jié)論:


var_dump( date("Y-m-d", strtotime("-1 month", strtotime("2020-12-31"))) ); // 輸出2020-12-03

 

var_dump( date("Y-m-d", strtotime("+1 month", strtotime("2020-08-31"))) ); // 輸出2020-10-01

 

var_dump( date("Y-m-d", strtotime("next month", strtotime("2020-01-31"))) ); // 輸出2020-03-03

 

var_dump( date("Y-m-d", strtotime("last month", strtotime("2020-03-31"))) ); // 輸出2020-03-03



解決方案

從PHP5.3開始呢, date新增了“first day of” 和 “l(fā)ast day of”來(lái)修正短語(yǔ), 來(lái)明確這個(gè)問(wèn)題, 也就是可以限定好不要讓date自動(dòng)“規(guī)范化”:


var_dump( date("Y-m-d", strtotime("last day of -1 month", strtotime("2020-03-31"))) ); // 輸出2020-02-28

 

var_dump( date("Y-m-d", strtotime("first day of +1 month", strtotime("2020-08-31"))) ); // 輸出2020-09-01

 

var_dump( date("Y-m-d", strtotime("first day of next month", strtotime("2020-01-31"))) ); // 輸出2020-02-01

 

var_dump( date("Y-m-d", strtotime("last day of last month", strtotime("2020-03-31"))) ); // 輸出2020-02-28


那如果是5.3之前的版本, 可以使用mktime之類的, 把所有的日子忽略掉, 比如都限定為每月1號(hào)就可以了, 只不過(guò)就不如直接用first day來(lái)的更加優(yōu)雅.


上一篇:西安企業(yè)做營(yíng)銷型網(wǎng)站的策劃思路

下一篇:企業(yè)如何做好手機(jī)網(wǎng)站建設(shè)?

CopyRight ? 西安宏博網(wǎng)絡(luò)科技有限公司   備案號(hào):陜ICP備10007014號(hào)-8   站點(diǎn)地圖 免責(zé)聲明:本網(wǎng)站部分資源來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系我們告知?jiǎng)h除,我們將會(huì)盡快處理,謝謝!本站不承擔(dān)任何法律責(zé)任。