關於PHP中時間計算的"-1 month"?

來源:互聯網
上載者:User
今天,也就是10月31號,執行一下代碼:

echo date('Ym', strtotime("-1 month"));

返回的結果是201410,是不是說明類似strtotime("-1 month")是不可信的?

定義了時區。

php -v

PHP 5.4.33-1~dotdeb.0 (cli) (built: Sep 19 2014 12:00:21)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

回複內容:

今天,也就是10月31號,執行一下代碼:

echo date('Ym', strtotime("-1 month"));

返回的結果是201410,是不是說明類似strtotime("-1 month")是不可信的?

定義了時區。

php -v

PHP 5.4.33-1~dotdeb.0 (cli) (built: Sep 19 2014 12:00:21)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

case TIMELIB_MONTH:  s->time->relative.m += amount * relunit->multiplier; break;月份直接減1 ,當前日期 10月 31號 減一變成  9月31號 即是 10月1號

這個是php bug,你可以指定月的開始時間。
$base = strtotime(date('Y-m',time()) . '-01 00:00:01');
echo date('m/Y',strtotime('-1 month', $base));

不定義時區真的大丈夫嗎?定義時區後我這邊是正常的,PHP5.5環境。

date_default_timezone_set("Asia/Shanghai");echo date("Y-m", strtotime("-1 month"));

可能真的如 @美麗的格調 所說是個BUG(看了下手冊不知道是不是5.2.7之處的那個BUG),按照他的說法定義了相對時間後正常了。

echo date("Y-m", strtotime("-1 month", strtotime("first day of this month")));
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.