PHP 使用 strtotime() 想要轉換成上週二、上週四等等的 timestamp,使用上會有要注意的地方。
PHP strtotime 對於 last、next 的注意事項
下述直接用範例來說明
- 先看今天星期幾:5/2 是星期三
- php > echo date('Y-m-d H:i:s', strtotime("today")), "\n";
- 2018-05-02 00:00:00
- 使用 last Tuesday,預期上週二應該是 4/24 (結果出現 5/1)
- php > echo date('Y-m-d H:i:s', strtotime("last Tuesday")), "\n";
- 2018-05-01 00:00:00
- 使用 next Tuesday
- php > echo date('Y-m-d H:i:s', strtotime("Tuesday")), "\n";
- 2018-05-08 00:00:00
- php > echo date('Y-m-d H:i:s', strtotime("next Tuesday")), "\n";
- 2018-05-08 00:00:00
- 使用 -1 / -2 week 的方式來做
- php > echo date('Y-m-d H:i:s', strtotime("-1 Tuesday")), "\n";
- 2018-05-01 00:00:00
- php > echo date('Y-m-d H:i:s', strtotime("-2 Tuesday")), "\n";
- 2018-04-24 00:00:00
- 最後使用 this week / last week 來指定「時間起始點」,就是我們要的答案
- php > echo date('Y-m-d H:i:s', strtotime("last Tuesday this week")), "\n";
- 2018-04-24 00:00:00
- php > echo date('Y-m-d H:i:s', strtotime("Tuesday last week")), "\n";
- 2018-04-24 00:00:00
相關網頁
- how to get the date of last week's (tuesday or any other day) in php? 下述取自此篇
- php > $tuesday = strtotime('last Tuesday');
- php > $tuesday = date('W', $tuesday) == date('W') ? $tuesday - 7 * 86400 : $tuesday;
- php > echo date('Y-m-d H:i:s', $tuesday);
- 2018-04-24 00:00:00