phpで相対指定の曜日を書く場合の考え方

結論

‘this Sunday’等、現在からの相対指定で曜日を書く場合は、’this’は現在以後に初めて出現する日を指す、と考えると良い。

‘this’の指す先は分かりづらい

PHPで日付を文字列として与える場合、以下のように、「次の火曜日」や「前の日曜日」という書き方ができる。これは理解しやすい。

$time = strtotime('next Tuesday');
$datetime =  new  Datetime('last Sunday');

が、’this’は少々直感的に理解しづらい。例えば現在が2014-10-07(Tue)とすると、

new  Datetime('this Monday');  // 2014-10-13(次週の月曜日)
new  Datetime('this Tuesday');  // 2014-10-07(当日)
new  Datetime('this Wednesday');  // 2014-10-08(今週の水曜日)

というように、指す先が今週であったり次週であったりする。

現在を基準に考える

しかし、現在を基準に考えてみると、意外と話は簡単になる。要は「現在以後(即ち現在を含む)に初めて出現する日」が’this’なのである。

これでもう「月曜日に’this Sunday’だと今週と来週どっちの日曜になるんだっけ?水曜日の場合は?」と悩まなくて済む。ひょっとしたらこれはPHPの書法というよりは、英語のルールの問題なのかもしれないが、それはそれで。