第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」形式で表示するスクリプトを書いてください。