strtotimeのまずい点

3/31に3月を-1 monthした場合、2月にならない

3/31 を -1 month -> 2/31 -> 2/28 + 3 -> 3/3 が帰ってくる

↓も。基本的に月末はまずい
5/31 -> 5/1
7/31 -> 7/1
10/31 -> 10/1

3/31に+1monthすると5/1になる。(3/31+1m -> 4/31 -> 4/30+1d -> 5/1)

mktime使うようにするのがベスト。引数が多くて余り使うきしないけど。。。