PHP:strtotimeで月を操作する際の注意点

strtotime()で月を処理する場合の注意点

starftime で「-1または+1 month」などの足し引きを行う際、期待しない結果が出て来る可能性があります。
足し引きした結果の月の日数が30日以下、いわゆる西向く士(2,4,6,9,11)月の場合に発生します。

[失敗例]
< ?php $timestamp = strtotime('2010-03-31 -1 month'); echo date('m', $timestamp).'月'; ?>
結果:03月

[成功例]

< ?php $timestamp = strtotime(' -1 month', date('Y-m-01', strtotime('2010-03-31'))); echo date('m', $timestamp) . '月'; ?>
結果:02月

↓のように処理をしていると考えれば分かりやすい。
‘2006-03-31’ -1 month = ‘2006-02-31’
‘2006-02-31’ = ‘2006-03-03’

上記成功例では’Y-m-01’と1日を指定していますが、1日~28日であればなんでもよい。