MW211 EXIT

devlog
PHP/タイムスタンプ型(2)
2012年07月07日
┌──────────────────────────────────────┐
│echo strtotime('1 day', 0);                                                 │
└──────────────────────────────────────┘
ってやると、結果は「86400」。

┌──────────────────────────────────────┐
│echo date('Y/m/d H:i:s', strtotime('1 day', 0))                             │
└──────────────────────────────────────┘
ってやると、既定を日本時間にしてると「1970/01/02 09:00:00」とかとなって
なんだかわけがわからなくなるが、「1970/01/02 00:00:00」のことで
しっかりスタートから一日分加算されているのだ。

ということで、つ・ま・り…、あのn日後とかの日付計算ができるってわけ。

┌──────────────────────────────────────┐
│$timestamp = time();                                                        │
│echo date('Y/m/d H:i:s', $timestamp).'<br/>';                               │
│$timestamp += strtotime('1 day', 0);                                        │
│echo date('Y/m/d H:i:s', $timestamp).'<br/>';                               │
└──────────────────────────────────────┘
これで1日進められる。

┌──────────────────────────────────────┐
│$timestamp += (strtotime('+1 day') - time());                               │
└──────────────────────────────────────┘
やった!これみたいなまわりくどいことをしなくてもよくなった!

ただね、月に関しては相変わらずダメ。
┌──────────────────────────────────────┐
│echo strtotime('1 month', 0);                                               │
└──────────────────────────────────────┘
この結果が「2678400=31日×86400秒」でつまり、31日固定のようだ。
ま、1970年の01月は31日あるもんね。

ちなみに1ヶ月ずらしてみると…。
┌──────────────────────────────────────┐
│echo strtotime('1 month', 2678400) - strtotime('1 month', 0);               │
└──────────────────────────────────────┘
結果は「2419200=28日×86400秒」。やはり2月で28日(うるう年じゃないし)となる。
分類:PHP