DateTimeクラスについて

DateTimeクラスのメモ

・タイムゾーンの取得、変更

// タイムゾーンの取得
$date = new DateTime();
$timezone = $date->getTimezone();
echo $timezone->getName();
echo '<br>';

// タイムゾーンの変更
$date->setTimezone(new DateTimeZone('Asia/Tokyo'));
$timezone = $date->getTimezone();
echo $timezone->getName();
echo '<br>';
echo $date->format('Y-m-d H:i:s');
echo '<br>';

・現在日時を作成

// 現在日時を作成
$date = new DateTime();
echo $date->format('Y-m-d H:i:s');
echo '<br>';

・指定した日時を作成

// 指定した日時を作成
$date = new DateTime('2020-07-01 12:23:34');
echo $date->format('Y-m-d H:i:s');
echo '<br>';

・数値から日時を作成

// 数値から
$date = new DateTime();
$date->setDate(2020,9,23);
echo $date->format('Y-m-d H:i:s');
echo '<br>';

$date = new DateTime();
$date->setDate(2020,4,15)->setTime(12,45,37);
echo $date->format('Y-m-d H:i:s');
echo '<br>';

・出力形式

フォーマットは下記を参照

// 出力形式 - 過去記事参照
$date = new DateTime();
echo $date->format('Y-m-d h:i:s a');
echo '<br>';
echo $date->format('y-F-d D');
echo '<br>';
echo $date->format('t'); 
echo '<br>';

・日付を計算

strtotime関数を使った方法は下記参照

// 日付の計算 - strtotimeは過去記事参照
$date1 = new DateTIme('2020-05-04');
$date2 = new DateTime('2021-12-27');
$diff = $date1->diff($date2);
echo $diff->format('%R%a');
echo '<br>';
echo $date2->diff($date1)->format('%R%a');         // -3
echo '<br>';
echo $date2->diff($date1, true)->format('%R%a');   // +3 (常に正)
echo '<br>';

$date1 = new DateTime('2013-05-04 23:34:14');
$date2 = new DateTime('2014-07-01 09:10:13');
$diff = $date1->diff($date2);
echo $diff->format('%R %y年 %mヶ月 %d日 %h時間 %i分 %s秒 の時差');
echo '<br>';

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です