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行目のように年月日のみの出力もできます。
関連の記事