2010/5/31 月曜日

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

Filed under: PHP — tiny-p @ 10:34:44

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日であればなんでもよい。

コメント (0)

この記事にはまだコメントがついていません。

コメント RSS トラックバック URL

現在コメントフォームは利用できません。

Copyright (C) 2007 tiny-p. All Rights Reserved.