php month月份增加

2021-09-25 10:42:07 字數 1932 閱讀 1216

今天遇見乙個問題,那就是有乙個vip會員功能,購買1個月,3個月,6個月vip。然後我們需要給使用者更新vip的過期時間,但是客戶端和服務端的時間始終不一致。

首先,網上一大堆的增加月份的例子都是如下:

echo date(「y-m-d」, strtotime(「2017-01-31 +3 month」)); php結果:2017-05-01

咋一看其實沒什麼不對,但是下面的例子就有點讓我們**了。

echo date(「y-m-d」, strtotime(「2017-01-31 +1 month」)); php結果:2017-03-03 客戶端(ios/android)結果:2017-02-28

echo date(「y-m-d」, strtotime(「2017-01-30 +1 month」)); php結果:2017-03-02 客戶端(ios/android)結果:2017-02-28

echo date(「y-m-d」, strtotime(「2017-02-01 +1 month」)); php結果:2017-03-01 客戶端(ios/android)結果:2017-03-01

echo date(「y-m-d」, strtotime(「2017-02-02 +1 month」)); php結果:2017-03-02 客戶端(ios/android)結果:2017-03-02

這裡是不是就很難接受了?最主要是ios和android都不是這樣的。沒辦法,為了滿足客戶端的邏輯,只有自己重寫寫了乙個函式,**如下:

/**

* 根據傳遞的時間錯,加減月份,獲取之後的時間。

* 1.31 +1 month應該是2月最後一天, 2.1 +1 month應該是3.1

** @param string $calcstr (+/- 1 month),計算月份,加減月份

* @param int $timestamp 需要計算的時間戳

* @param string $format 時間輸出格式

** @return false|int|string

*/public static function calcmonthday($calcstr, $timestamp = 0, $format = 'y-m-d')

if (!is_integer($timestamp))

//記錄需要計算的當前的天數和具體時間

$day = date("d", $timestamp);

$time = date("h:i:s", $timestamp);

//划算成月份,通過月份首先遞增月份

$timestampmonth = date("y-m", $timestamp);

$monthcalctime = strtotime($timestampmonth . ' ' . $calcstr . " month");

//獲取計算後的年月

$calcyear = date("y", $monthcalctime);

$calcmonth = date("m", $monthcalctime);

//獲取計算的月份的實際天數

$calcday = date("t", $monthcalctime);

//如果計算的天數大於計算的天數,則取當前計算的天數,否則使用計算後的天數

if ($calcday > $day)

//組合計算後的日期時間

$calcdatetime = "$calcyear-$calcmonth-$calcday $time";

//格式化日期時間

$calctime = date($format, strtotime($calcdatetime));

return $calctime;

}

這就計算出來的結果就滿足了客戶端的需求,看起來也比較正常。

be the first to comment.

英文月份和數字月份轉換

public static listmonth list arrays.aslist jan feb mar apr may jun jul aug sep oct nov dec public static string changenumbertochar string releaseversi...

按月份統計

id logtimes 12010 03 1213 04 412 2010 04 1313 04 443 2010 05 1813 04 444 2010 06 1813 04 445 2010 07 1813 04 446 2010 05 1813 04 447 2010 05 1813 04 4...

倒霉的月份

這個月還真是夠倒霉的,幾乎所有倒霉的事情都擠到了一起,總結如下 1 本本壞了,換了個零件,花費幾百大洋 2 我最親愛的sony e888sp壞了,修不好了,又是好幾百大洋 3 牛頭網的httphandler突然失靈,至今還沒找出問題所在,花費好多個夜晚找原因 4 好不容易擠出點時間回家幹活,結果家裡...