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

PHPの現在日時の取得と表示形式のサンプルです。(確認環境:PHP 7)

目次 DateTimeクラスとは
  表示形式のformatメソッドで使用する文字
  現在日時がずれる場合は、タイムゾーンの設定が必要
  date関数とは

DateTimeクラスとは

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

4行目は、年月日をスラッシュ区切りで、時分秒をコロン区切りにしています。
7行目のように年月日のみの出力もできます。
10行目は、漢字の指定も可能です。
13行目は、YYYYMMDDhhmmss形式で表示しています。
16行目は、曜日を表示しています。

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

 

表示形式の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
echo date_default_timezone_get();	// Europe/Berlin

Europe/Berlinになっています。

関数で設定

<?php
date_default_timezone_set('Asia/Tokyo');

'Asia/Tokyo'のタイムゾーンIDを設定しています。

 

php.iniで設定

XAMPPであれば次の1,2でphp.iniを開きます。

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

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

 

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

変更前

[Session]
define_syslog_variables=Off
[Date]
date.timezone=Europe/Berlin
[MySQL]

変更後

[Session]
define_syslog_variables=Off
[Date]
date.timezone=Asia/Tokyo
[MySQL]

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

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

関連の記事

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

△上に戻る