// 設定時區 date_default_timezone_set('Asia/Taipei'); // 建立 日期時間個體(物件) $date = new DateTime(); // 未帶參數時, 就是現在 $date = new DateTime('2000-01-01'); // 帶參數, 就是指定日期 // 沒有時間參數, 就是 00:00:00 // 以下同此例 // 老人家較關心日期,所以就不管時間了! XD // 日期往後(日期時間的加法) echo '方法一:加 10 月'; $date->add(new DateInterval('P10M')); // P 表 period, M 表 "月" echo $date->format('Y-m-d') . "\n"; // 格式化顯示 西元 年-月-日, 相當於 date() 函式 echo '方法二:加 2 天'; $date->modify('+2 day'); echo $date->format('Y-m-d') . "\n"; // 日期往前(日期時間的減法) echo '方法一:減 8 月 10 天'; $date->sub(new DateInterval('P8M10D')); echo $date->format('Y-m-d') . "\n"; echo '方法二:減 2 天'; $date->modify('-2 day'); echo $date->format('Y-m-d') . "\n"; echo '當月 1 日'; $date->modify('first day of'); echo $date->format('Y-m-d') . "\n"; echo '當月月底'; $date->modify('last day of'); echo $date->format('Y-m-d') . "\n"; echo '前一天'; $date->modify('yesterday'); echo $date->format('Y-m-d') . "\n"; echo '後一天'; $date->modify('tomorrow'); echo $date->format('Y-m-d') . "\n"; echo '查 2000-01-01 是星期幾'; $dayOfWeek = $date->format('w'); echo "dayOfWeek = $dayOfWeek\n"; // 6, 星期日 = 0, 星期一 = 1, ... echo "當週的星期日"; $sunday = $date->modify("-$dayOfWeek day"); echo "sunday = ".$sunday->format('Y-m-d')."\n"; echo '當月第一個週一'; $date->modify('first mon of'); // 大小寫無差, 完整寫法 monday 也行 echo $date->format('Y-m-d') . "\n"; echo '當月最後一個週六'; $date->modify('last sat of'); echo $date->format('Y-m-d') . "\n"; echo '移至離當日最近的下個週四'; $date->modify('thursday'); echo $date->format('Y-m-d') . "\n"; echo '移至下個週五'; $date->modify('fri'); // 因為隔天就是週五, 所以只移了 1 天 echo $date->format('Y-m-d') . "\n"; echo '移至下個週三'; $date->modify('wed'); echo $date->format('Y-m-d') . "\n"; echo '移至下個月'; $date->modify('next month'); // 似乎無法搭配 day, ex: next day // 也不能搭數字, ex: next 2 month echo $date->format('Y-m-d') . "\n"; // 前一年的年初(第一天) $date->modify('first day of january last year'); // 前一年的年底(最後一天) $date->modify('last day of december last year'); // 日期的複製 // 不能直接宣告一個新的變數, 這樣有點類似 "指標" $date2 = $date // 這樣其實是將 $date2 指向 $date // 要將 $date2 看做是 $date 的別名 // 當變更了 $date2 的值, 其實是變更 $date // 應該要 $date2 = new DateTime($date->format('Y-m-d'));
關於上述例子中,簡單英文日期時間的參數格式,可以參考 Relative Formats
沒有留言:
張貼留言