php 深入理解strtotime函數(shù)(2)_PHP教程
推薦:如何使用PHP計(jì)算上一個(gè)月的今天一日,遇到一個(gè)問題,求上一個(gè)月的今天。 最開始我們使用 strtotime(-1 month) 函數(shù)求值,發(fā)現(xiàn)有一個(gè)問題,月長度不一樣的月份的計(jì)算結(jié)果有誤。 比如:2011-03-31,得到的結(jié)果是2011-03-03。我們先不追究什么問題,先看如何解決問題。 此時(shí),想起PHP中有一個(gè)mktime函數(shù)
strtotime(”-1 month”)求值失敗的原因
雖然strtotime(”-1 month”)這種方法對于后一個(gè)月比前一個(gè)月的天數(shù)的情況會(huì)求值失敗,但是從其本質(zhì)上來說,這并沒有錯(cuò)。 PHP這樣實(shí)現(xiàn)也無可厚非。只是我們的需求決定了我們不能使用這種方法,因此我們稱其為求值失敗。
我們來看它的實(shí)現(xiàn)過程,由于沒有第二個(gè)參數(shù),所以程序使用默認(rèn)的當(dāng)前時(shí)間。 第一個(gè)參數(shù)傳入的是-1 month字符串,這個(gè)字符串所對應(yīng)的re文件中的正則為:
reltextunit = (('sec'|'second'|'min'|'minute'|'hour'|'day'|'fortnight'|'forthnight'|'month'|'year') 's'?) | 'weeks' | daytext;
relnumber = ([+-]*[ /t]*[0-9]+);
relative = relnumber space? (reltextunit | 'week' );
最終relative會(huì)對應(yīng)一系列操作,程序會(huì)識(shí)別出前面的-1 和后面的month字符串,month對應(yīng)一種操作類型:TIMELIB_MONTH 。 在此之后,根據(jù)識(shí)別出來的數(shù)字和操作類型執(zhí)行操作,如下代碼:
case TIMELIB_MONTH: s->time->relative.m += amount * relunit->multiplier; break;
如上代碼,則是直接記錄月份的相對值減一。 但是對于類似于3月31號(hào)這樣的情況,2月沒有31號(hào),程序會(huì)自動(dòng)將日期計(jì)算到下一個(gè)月。
分享:php二分法查找數(shù)組是否包含某一元素二分法查找數(shù)組是否包含某一元素,兼容正反序,代碼實(shí)現(xiàn): 代碼如下: ?php $searchValue = (int)$_GET['key']; function search(array $array, $value) { $max = count($array)-1; $min = 0; $isAscSort = $array[$min] $array[$max]; while (TRUE) { $sum = $min+$max
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-php 深入理解strtotime函數(shù)(2)
。