第13章 日付と時間
日付と時間の取得
// 現在の日付を取得
echo date('Y-m-d'); // 2023-07-06
// 現在の時間を取得
echo date('H:i:s'); // 14:00:00
日付と時間のフォーマット
// 現在の日付を異なるフォーマットで出力
echo date('d/m/Y'); // 06/07/2023
日付と時間の演算
// 5日後の日付を取得
echo date('Y-m-d', strtotime('+5 days')); // 2023-07-11
タイムスタンプ
// 現在のUNIXタイムスタンプを取得
echo time(); // 1691289600
特定の日付を表すタイムスタンプを作成
// 特定の日付を表すUNIXタイムスタンプを取得
$timestamp = mktime(0, 0, 0, 12, 31, 2023);
echo $timestamp; // 1704057600
DateTimeオブジェクト
// DateTimeオブジェクトを生成
$date = new DateTime();
// 現在の日付を出力
echo $date->format('Y-m-d'); // 2023-07-06
DateTimeオブジェクトを利用した日付の加算、減算
$date = new DateTime();
// DateIntervalオブジェクトを生成
$interval = new DateInterval('P10D');
// 10日後の日付を計算
$date->add($interval);
echo $date->format('Y-m-d'); // 2023-07-16
DateTimeオブジェクトを利用した時間の差分を計算
$$datetime1 = new DateTime('2023-07-01 12:00:00');
$datetime2 = new DateTime('2023-07-01 14:30:00');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%H時間 %I分'); // 2時間 30分
DateTimeオブジェクトを利用した月末日の取得
$date = new DateTime('2023-07-01');
$date->modify('last day of this month');
echo $date->format('Y-m-d'); // 2023-07-31
時間の書式設定
$date = new DateTime();
echo $date->format('g:i a'); // 1:45 pm
年内の経過日数を取得
$date = new DateTime();
echo $date->format('z'); // 186
日付と時間のバリデーション
// 日付の妥当性をチェック
var_dump(checkdate(12, 31, 2023)); // bool(true)
var_dump(checkdate(2, 29, 2023)); // bool(false)
練習問題1.
現在の日付を「yyyy-mm-dd」形式で表示するスクリプトを書いてください。
練習問題2.
与えられた日付から1ヶ月後の日付を表示する関数を作成してください。引数は日付('yyyy-mm-dd'形式)とし、返り値も同じ形式であるべきです。
練習問題3.
現在の時刻を「hh:mm:ss」形式で表示するスクリプトを書いてください。