PHP 現在日時の取得と表示形式(DateTime)

PHPの現在日時の取得と表示形式のサンプルです。

確認環境
・PHP 7
・XAMPP 7.1.8

目次

サンプル 現在日時を取得する(DateTimeクラス)
  formatメソッドで使用する文字
  タイムゾーンの設定
  現在日時を取得する(date)

現在日時を取得する(DateTimeクラス)

  • DateTimeクラスのインスタンスを生成して現在日時を取得します。
  • formatメソッドで指定した書式にします。
  • 現在日時がずれている場合は、タイムゾーンの設定が必要です。
  • PHP5.2.0以降で使用できます。

DateTimeクラスで現在日時を表示するサンプルです。

<?php

$date1 = new DateTime();

$date2 = $date1->format("Y/m/d H:i:s");
print $date2; // 2017/08/09 19:11:00

$date3 = $date1->format("Y/m/d");
print $date3; // 2017/08/09

$date4 = $date1->format("Y年m月d日 H時i分s秒");
print $date4; // 2017年08月09日 19時12分47秒

$date5 = $date1->format("YmdHis");
print $date5; // 20170809191418

$date6 = $date1->format("Y年m月d日 H時i分s秒 D");
print $date6; // 2017年08月09日 19時17分01秒 Wed

?>

5行目は、年月日をスラッシュ区切りで、時分秒をコロン区切りにしています。
8行目のように年月日のみの出力もできます。
11行目は、漢字をつけています。
14行目は、YYYYMMDDhhmmss形式で表示しています。
17行目は、曜日を表示しています。

以下は、PHPマニュアルのDateTimeクラスのリンクです。
https://www.php.net/manual/ja/class.datetime.php

 

formatメソッドで使用する文字

formatメソッドで使用する文字の一覧です。

文字
説明
Y 西暦の年4桁
y 西暦の年2桁
m 月(01-12)、1桁は頭0あり
n 月(1-12)、1桁は頭0なし
d 日(01-31)、1桁は頭0あり
j 日(1-31)、1桁は頭0なし
H 時間(00-23)
i 分(00-59)
s 秒(00-59)
w 曜日(0が日曜日-6が土曜日)
D 曜日(Sun-Sat)
L うるう年の場合は1、それ以外は0

以下は、PHPマニュアルのDateTime::formatのリンクです。
https://www.php.net/manual/ja/datetime.format.php

 

タイムゾーンの設定

現在日時がずれる場合は、タイムゾーンの設定が必要です。
関数またはphp.iniでタイムゾーンを設定します。

 

関数で設定する場合

<?php

date_default_timezone_set('Asia/Tokyo');

$date1 = new DateTime("now");

$date2 = $date1->format("Y/m/d H:i:s");
print $date2; // 2017/08/09 19:11:00

3行目は、関数でタイムゾーンを設定しています。
'Asia/Tokyo'は、タイムゾーンIDです。

 

php.iniでタイムゾーンを設定する場合

php.iniでタイムゾーンを設定する場合のやり方です。
XAMPPでの例です。

1.XAMPPコントロールパネルのconfigをクリックします。

 

2.PHP(php.ini)をクリックします。

 

3.date.timezoneで検索します。
Europe/BerlinをAsia/Tokyoに書き換えます。

変更前

変更後

4.Apacheを再起動して画面を表示するとAsia/Tokyoのタイムゾーンで表示されます。

 

現在日時を取得する(date)

  • date関数は2038年問題があり、2038年1月19日までしか使えないので使用しない方が良いです。

date関数で現在日時を表示するサンプルです。

<?php

$date1 = date("Y/m/d H:i:s");
print $date1; // 2017/08/09 19:11:00

$date2 = date("Y/m/d");
print $date2; // 2017/08/09

?>

3行目は、年月日をスラッシュ区切りで、時分秒をコロン区切りにしています。
6行目のように年月日のみの出力もできます。

関連の記事

PHP 日時を計算するサンプル(加算と減算)
PHP 日時の差分を求める(DateTime)

△上に戻る