menu
ホーム > PHPサンプル > 日付系 > PHP 時間 を取得する
PHPサンプル

UPDATE:2019年06月18日

PHP 時間 を取得する

PHP 時間 を取得する | wepicks!
PHP5 PHP7

時間を取得する

PHP で 時間 を取得します。現在、未来、過去、指定時刻を取得するには、「date()」や date() と「strtotime()」か「mktime()」を組み合わせて使用します。また、DateTimeクラス を利用することでも、様々な時間を取得することが出来ます。
タイムゾーンの指定
php.ini に記述する場合
date.timezone = Asia/Tokyo
スクリプトに記述する場合
<?php date_default_timezone_set ('Asia/Tokyo'); ?>
※日本時間に合わせます。タイムゾーンに誤りがあると日付系の関数やクラスでエラーが起こる場合があります。
使用する関数やクラス

書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列

書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列

書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す

書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列

サンプル

※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。


現在の時間を取得

date()で取得

date()関数 は、指定した日付や時刻のフォーマット文字列から、現在や任意の日付の日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() が理解できる日付/時刻フォーマット文字列

取得内容フォーマット文字説明
g12時間単位。先頭ゼロなし1~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり01~12
H24時間単位。先頭ゼロあり00~23
a午前/午後。小文字表示am pm
A午前/午後。大文字表示AM PM
echo date('g');//12
echo date('G');//0
echo date('h');//12
echo date('H');//00
echo date('a');//pm
echo date('A');//PM

date() で現在時間を取得します。
サンプル

現在が0時の場合、結果は、

・g 12時間単位。先頭ゼロなし。(1~12):12
・G 24時間単位。先頭ゼロなし。(0~23):0
・h 12時間単位。先頭ゼロあり。(01~12):12
・H 24時間単位。先頭ゼロあり。(00~23):00

となります。

現在が13時の場合、結果は、

・g 12時間単位。先頭ゼロなし。(1~12):1
・G 24時間単位。先頭ゼロなし。(0~23):13
・h 12時間単位。先頭ゼロあり。(01~12):01
・H 24時間単位。先頭ゼロあり。(00~23):13

となります。

午前または午後

結果は、

・a 午前または午後(小文字)(am pm):pm
・A 午前または午後(大文字)(AM PM):PM

となります。

取得内容フォーマット文字説明
i先頭ゼロあり00~59
echo date('i');//59

結果は、

・i 先頭にゼロをつける。(00~59):41

となります。

取得内容フォーマット文字説明
s先頭ゼロあり00~59
echo date('s');//01
ミリ秒vミリ秒 (PHP 7.0.0 で追加) uと同じ注釈が当てはまります。000~999
echo date('v');//000
マイクロ秒uマイクロ秒 (PHP 5.2.2 で追加)。date() の場合、これは常に 000000 となることに注意。というのも、この関数が受け取るパラメータは integer 型だからです。一方 DateTime をマイクロ秒つきで作成した場合は、DateTime::format() はマイクロ秒にも対応しています。000000~999999
echo date('u');//000000

結果は、

・s 先頭にゼロをつける。(00~59):24

となります。

ミリ秒

結果は、

・v ミリ秒。(000~999):000

となります。

マイクロ秒

結果は、

・u マイクロ秒(000000~999999):000000

となります。

Swatch インターネット時間

結果は、

・B Swatch インターネット時間(000~999):487

となります。

DateTimeクラスで取得

DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は現在の日時になります。オブジェクトのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列

取得内容フォーマット文字説明戻り値の例
g12時間単位。先頭ゼロなし1~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり01~12
H24時間単位。先頭ゼロあり00~23
a午前/午後。小文字表示am pm
A午前/午後。大文字表示AM PM
$objDateTime = new DateTime();
echo $objDateTime->format('g');//12
echo $objDateTime->format('G');//0
echo $objDateTime->format('h');//12
echo $objDateTime->format('H');//00
echo $objDateTime->format('a');//pm
echo $objDateTime->format('A');//PM

DateTimeクラスで現在時間を取得します。

現在が0時の場合、結果は、

・g 12時間単位。先頭ゼロなし。(1~12):12
・G 24時間単位。先頭ゼロなし。(0~23):0
・h 12時間単位。先頭ゼロあり。(01~12):12
・H 24時間単位。先頭ゼロあり。(00~23):00

となります。

現在が13時の場合、結果は、

・g 12時間単位。先頭ゼロなし。(1~12):1
・G 24時間単位。先頭ゼロなし。(0~23):13
・h 12時間単位。先頭ゼロあり。(01~12):01
・H 24時間単位。先頭ゼロあり。(00~23):13

となります。

午前または午後

結果は、

・a 午前または午後(小文字)(am pm):pm
・A 午前または午後(大文字)(AM PM):PM

となります。

取得内容フォーマット文字説明戻り値の例
i先頭ゼロあり00~59
$objDateTime = new DateTime();
echo $objDateTime->format('i');//59

結果は、

・i 先頭にゼロをつける。(00~59):41

となります。

取得内容フォーマット文字説明戻り値の例
s先頭ゼロあり00~59
$objDateTime = new DateTime();
echo $objDateTime->format('s');//01
ミリ秒vミリ秒654
$objDateTime = new DateTime();
echo $objDateTime->format('v');//000
マイクロ秒uマイクロ秒654321
$objDateTime = new DateTime();
echo $objDateTime->format('u');//000000

結果は、

・s 先頭にゼロをつける。(00~59):24

となります。

ミリ秒

結果は、

・v ミリ秒。(000~999):086

となります。

マイクロ秒

結果は、

・u マイクロ秒(000000~999999):420050

となります。

Swatch インターネット時間

結果は、

・B Swatch インターネット時間(000~999):487

となります。

任意の時間を取得

date() + strtotime() で取得

date()関数strtotime()関数 を組み合わせることで、任意の時間を取得できます。date() にUNIXタイムスタンプを指定することで、タイムスタンプで指定した日時の時刻を取得します。タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。
UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列');
UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列');
最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列

指定日時 2020-01-01 00:00:00 の場合

結果は、

・g 12時間単位。先頭ゼロなし。(1~12):12
・G 24時間単位。先頭ゼロなし。(0~23):0
・h 12時間単位。先頭ゼロあり。(01~12):12
・H 24時間単位。先頭ゼロあり。(00~23):00

となります。

指定日時 2020-01-02 03:04:05 の場合

結果は、

・i 先頭にゼロをつける。(00~59):04

となります。

指定日時 2020-01-02 03:04:05 の場合

結果は、

・s 先頭にゼロをつける。(00~59):05

となります。

DateTimeクラスで取得

DateTimeクラスを呼び出す際に日付や時刻を指定することが可能で、任意の時間を取得できます。DateTimeクラスに指定する日時の書式は DateTime('2019-01-02 03:04:05'); というような形です。また、英文形式フォーマット文字列も理解可能で、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列

指定日時 2020-01-01 00:00:00 の場合

結果は、

・g 12時間単位。先頭ゼロなし。(1~12):12
・G 24時間単位。先頭ゼロなし。(0~23):0
・h 12時間単位。先頭ゼロあり。(01~12):12
・H 24時間単位。先頭ゼロあり。(00~23):00

となります。

指定日時 2020-01-02 03:04:05 の場合

結果は、

・i 先頭にゼロをつける。(00~59):04

となります。

指定日時 2020-01-02 03:04:05 の場合

結果は、

・s 先頭にゼロをつける。(00~59):05

となります。


サンプルコード

– サンプル Click Here ! –

実行結果 [2013/11/15 18:29:37 現在の場合]
現在の時刻/時間 様々な書式


・g 12時間単位。先頭ゼロなし。(1~12):8
・G 24時間単位。先頭ゼロなし。(0~23):20
・h 12時間単位。先頭ゼロあり。(01~12):08
・H 24時間単位。先頭ゼロあり。(00~23):20


・i 先頭にゼロをつける。(00~59):21


・s 先頭にゼロをつける。(00~59):48

午前または午後
・a 午前または午後(小文字)(am pm):pm
・A 午前または午後(大文字)(AM PM):PM

ミリ秒
・v ミリ秒。(000~999):000

マイクロ秒
・u マイクロ秒(000000~999999):000000

Swatch インターネット時間
・B Swatch インターネット時間(000~999):515


任意の日付の時間
任意の日付 が2019/05/01 00:00:00 の場合
2019-05-01 00:00:00
2019-05-01 00:00:00
2019-05-01 00:00:00


任意の日付から + 時間
任意の日付 が2019/05/01 00:00:00 の場合
2019-05-01 01:01:01
2019-05-05 04:00:00
2019-05-01 01:40:00
2019-05-01 00:01:40
2019-05-01 01:01:01
2019-05-05 04:00:00
2019-05-01 01:40:00
2019-05-01 00:01:40


任意の日付から- 時間
任意の日付 が2019/05/01 00:00:00 の場合
2019-04-30 22:58:59
2019-04-26 20:00:00
2019-04-30 22:20:00
2019-04-30 23:58:20
2019-04-30 22:58:59
2019-04-26 20:00:00
2019-04-30 22:20:00
2019-04-30 23:58:20

– サンプル Click Here ! –


タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2019年6月16日
最終更新日:2019年06月18日

このカテゴリの他のページ

menu-page

この記事へのコメント

トラックバックurl

https://wepicks.net/phpsample-date-time/trackback/

page top