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の書法というよりは、英語のルールの問題なのかもしれないが、それはそれで。