トップへ(mam-mam.net/)

PHPで日付と時刻(年月日時分秒)を扱う ~サンプルソースコード

検索:

PHPで日付と時刻(年月日時分秒)を扱う ~サンプルソースコード

PHPで日時(年月日時分秒、タイムゾーン)を扱う方法をサンプルソースコードで解説

Unixタイムスタンプについて

「1970年1月1日 00:00:00 GMT」からの通算秒のことです。
例えば「1970年1月1日 00:00:01 GMT」は「1」ですし、「1970年1月1日 01:00:00 GMT」は「3600」です。
例えば以下を実行すると、現在のUnixタイムスタンプを表示し、タイムゾーンを日本に設定して現在の日時を表示します。

php > echo time();
1702539116
php > date_default_timezone_set('Asia/Tokyo');
php > echo date("Y/m/d H:i:s T",time());
2023/12/14 16:31:56 JST

date()関数

date("出力フォーマットの文字列", Unixタイムスタンプ):フォーマットされた文字列を返す

php > echo date("Y/m/d H:i:s",1700000000);
2023/11/15 07:13:20

フォーマット文字列(出力される日付文字列の書式)

単位 フォーマット文字 説明
Y4桁の数値で表した年2022
y2桁の数値で表した年22
F月を表す文字列JanuaryからDecember
M月を表す文字列JanからDec
m月を表す数値で先頭のゼロを含む01から12
n月を表す数値で先頭のゼロを含まない 1から12
d2桁の日付で先頭のゼロを含む01から31
j2桁の日付で先頭のゼロを含まない 1から31
z年始からの通算日数0から365(1月1日が0)
曜日DMonからSun
曜日lSundayからSaturday
午前午後aam か pm
午前午後AAM か PM
g12時間制での時間で先頭のゼロを含まない 1から12
h12時間制での時間で先頭のゼロを含む01から12
G24時間制での時間で先頭のゼロを含まない 1から23
H24時間制での時間で先頭のゼロを含む01から23
i先頭のゼロを含む00から59
s先頭のゼロを含む00から59
マイクロ秒u最大6桁0から999999
タイムゾーンe設定したタイムゾーン識別子UTC、GMT、PST、Atlantic/Azores、Asia/Tokyo、-08:00など
タイムゾーンOUTCからの時差(符号と時分)+0200
タイムゾーンPUTCからの時差(符号と時:分)+02:00
タイムゾーンTタイムゾーン短縮形UTC、GMT、PST、EST、MDTなど

タイムゾーン短縮形の例

GMT
グリニッジ標準時
UTC
協定世界時
JST
日本標準時 GMT +09:00
PST
太平洋標準時 GMT -08:00

DateTimeクラス

DateTimeクラスを使っても日時を操作することができます。

タイムゾーンを変更して日時を表示させてみます。

php > //太平洋標準時の日時の文字列を設定します。以下2つは同じ日時です。
php > $d=new DateTime("02 Dec 2018 1:03:04 -0800");
php > $d=new DateTime("02 Dec 2018 1:03:04 PST");

php > //Unixタイムスタンプを表示します。
php > echo $d->getTimeStamp();
1543741384

php > //日時とタイムゾーンを表示します。
php > echo $d->format("Y-m-d H:i:s T P");
2018-12-02 01:03:04 PST -08:00


php > //タイムゾーンを「日本標準時」に変更して日時とタイムゾーンを表示します。
php > $d->setTimeZone(new DateTimeZone('JST'));
php > echo $d->format("Y-m-d H:i:s T P");
2018-12-02 18:03:04 JST +09:00


タイムゾーンをJST(日本標準時)に設定し、
2020年12月1日 22時15分30秒に設定して、日時とタイムゾーンを表示します。

php > $d=new DateTime();
php > $d->setTimeZone(new DateTimeZone('JST'));
php > $d->setDate(2020, 12, 1);
php > $d->setTime(22, 15, 30, 0);

php > //Unixタイムスタンプを表示します。
php > echo $d->getTimeStamp();
1606828530

php > //日時とタイムゾーンを表示します。
php > echo $d->format("Y-m-d H:i:s T P");
2020-12-01 22:15:30 JST +09:00