- // 設定時區
- 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
沒有留言:
張貼留言