UPDATE:2021年09月22日
PHP date g「時」を取得<現在/過去/未来>
date('g')/date('g', タイムスタンプ) で 時 を取得する
date() が理解できる日付/時刻フォーマット文字列
date('g')で現在の 時 を取得
取得内容 | フォーマット文字 | 例 | 説明 |
---|---|---|---|
時 | g | 12時間単位。先頭ゼロなし | 1~12 |
G | 24時間単位。先頭ゼロなし | 0~23 | |
h | 12時間単位。先頭ゼロあり | 01~12 | |
H | 24時間単位。先頭ゼロあり | 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('g') 現在の 時
実行日時が 2021-09-21 20:57:52 の場合、現在の時 を取得する。
1 2 3 4 5 6 | ・g 時。12時間単位。先頭ゼロなし。(1~12):<strong><?php echo date('g'); ?></strong><br> ・G 時。24時間単位。先頭ゼロなし。(0~23):<strong><?php echo date('G'); ?></strong><br> ・h 時。12時間単位。先頭ゼロあり。(01~12):<strong><?php echo date('h'); ?></strong><br> ・H 時。24時間単位。先頭ゼロあり。(00~23):<strong><?php echo date('H'); ?></strong><br> ・a 午前/午後。小文字表示。(am pm):<strong><?php echo date('a'); ?></strong><br> ・A 午前/午後。大文字表示。(AM PM):<strong><?php echo date('A'); ?></strong><br> |
結果は
・G 時。24時間単位。先頭ゼロなし。(0~23):20
・h 時。12時間単位。先頭ゼロあり。(01~12):08
・H 時。24時間単位。先頭ゼロあり。(00~23):20
・a 午前/午後。小文字表示。(am pm):pm
・A 午前/午後。大文字表示。(AM PM):PM
となります。
date('g', タイムスタンプ) で任意の日時の 時 を取得
date() + strtotime() で任意の日時の 時
date()関数 と strtotime()関数 を組み合わせることで、任意の日時を取得できます。date() にUNIXタイムスタンプを指定すると、タイムスタンプの日時に合わせた日付や時刻を返します。
タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。日付/時刻のフォーマットと英文形式のフォーマットを組み合わせた書式も読み込めます。
「 UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列'); 」
「 UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列'); 」
任意の日時(指定日時)が 2021/09/21 21:06:45 の場合、指定日時の時 を取得する。
1 2 3 4 | <?php echo date('g', strtotime('2021-09-21 21:06:45')).'<br>'; echo date('G', strtotime('2021-09-21 21:06:45')).'<br>'; ?> |
結果は
21
となります。
strtotime() に指定する最も一般的な日時の書式は strtotime('2021-09-21 00:00:00'); というような形です。例でも「2021-09-21 21:06:45」の日時フォーマットですが、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる日付/時刻のフォーマット文字列
strtotime() が理解できる英文形式フォーマット文字列
- 「00:00:00(時:分:秒)」
※日付の指定がが無い場合、現在日が採用。 - 「02-01-2021(日-月-年)」
- 「02.01.2021(日.月.年)」
- 「01/02/21(月/日/年)」
- 「21-01-02(年-月-日)」
- 「01/02/2021(月/日/年)」
- 「Jan. 02, 2021(3文字英語月. 日, 年)」
- 「02 Jan 2021(日 3文字英語月 年)」
date() + mktime() で任意の日時の 時
date()関数 と mktime()関数 を組み合わせることでも、任意の日時を取得できます。
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);
任意の日時(指定日時)が 2021/09/21 22:00:00 の場合、指定日時の時 を取得する。
1 2 3 4 | <?php echo date('g', mktime(22,0,0,9,21,2021)).'<br>'; echo date('G', mktime(22,0,0,9,21,2021)).'<br>'; ?> |
結果は
22
となります。
date('g') で現在から 未来/過去 の 時 を取得
date() + strtotime()で取得
現在から未来の 時
実行日時が 2021/09/21 22:02:58 の場合、現在から 2時間後の時 を取得する。
1 2 3 4 | <?php echo date('g', strtotime('+2 hours')).'<br>';//2時間後の時 echo date('G', strtotime('+2 hours')).'<br>';//2時間後の時 ?> |
結果は
0
となります。
現在から過去の 時
実行日時が 2021/09/21 22:02:58 の場合、現在から 8時間前の時 を取得する。
1 2 3 4 | <?php echo date('g', strtotime('-8 hours')).'<br>';//8時間前の時 echo date('G', strtotime('-8 hours')).'<br>';//8時間前の時 ?> |
結果は
14
となります。
例では「+2 hours」「-8 hours」という書式の英文形式フォーマットですが、strtotime()は以下のような英文形式フォーマットも扱えます。
- 「now(今)」
- 「today(本日)」
- 「tommorw(明日)」
- 「yesterday(昨日)」
- 「+1 day(1日後 -符号もOK)」
- 「+1 week(1週間後 -符号もOK)」
- 「+1 month(1カ月後 -符号もOK)」
- 「+1 year(1年後 -符号もOK)」
- 「+1 seconds(1秒後 -符号もOK)」
- 「+1 min(1分後 -符号もOK)」
- 「+1 hours(1時間後 -符号もOK)」
さらに詳細を知りたい方
strtotime() が理解できる英文形式フォーマット文字列
date() + mktime()で取得
現在から未来の 時
実行日時が 2021/09/21 22:02:58 の場合、現在から 2時間後の時 を取得する。
1 2 3 4 | <?php echo date('g', mktime(date('H')+2,date('i'),date('s'),date('n'),date('j'),date('Y'))).'<br>';//2時間後の時 echo date('G', mktime(date('H')+2,date('i'),date('s'),date('n'),date('j'),date('Y'))).'<br>';//2時間後の時 ?> |
結果は
0
となります。
現在から過去の 時
実行日時が 2021/09/21 22:02:58 の場合、現在から 8時間前の時 を取得する。
1 2 3 4 | <?php echo date('g', mktime(date('H')-8,date('i'),date('s'),date('n'),date('j'),date('Y'))).'<br>';//8時間前の時 echo date('G', mktime(date('H')-8,date('i'),date('s'),date('n'),date('j'),date('Y'))).'<br>';//8時間前の時 ?> |
結果は
14
となります。
date('g', タイムスタンプ) で任意の日時から 来年/過去 の時を取得
date() + strtotime()で取得
日付/時刻のフォーマットと英文形式のフォーマットを組み合わせて、任意の日付から未来や過去の時を取得できます。
任意の日付から未来の 時
任意の日付(指定日)が 2021/09/21 23:00:00 の場合、指定日時から 1時間後 を取得する。
1 2 3 4 | <?php echo date('g', strtotime('2021-09-21 23:00:00 +1 hours')).'<br>';//未来の時 echo date('G', strtotime('2021-09-21 23:00:00 +1 hours')).'<br>';//未来の時 ?> |
結果は
0
となります。
任意の日付から過去の 時
任意の日付(指定日)が 2021/09/21 1:00:00 の場合、指定日時から 2時間前 を取得する。
1 2 3 4 | <?php echo date('g', strtotime('2021-09-21 1:00:00 -2 hours')).'<br>';//過去の時 echo date('G', strtotime('2021-09-21 1:00:00 -2 hours')).'<br>';//過去の時 ?> |
結果は
23
となります。
例では「2021-09-21 1:00:00」形式の日付フォーマットですが、strtotime()は以下のような日付フォーマットも扱えます。
- 「00:00:00(時:分:秒)」
※日付の指定がが無い場合、現在日が採用。 - 「02-01-2020(日-月-年)」
- 「02.01.2020(日.月.年)」
- 「01/02/20(月/日/年)」
- 「20-01-02(年-月-日)」
- 「01/02/2020(月/日/年)」
- 「Jan. 02, 2020(3文字英語月. 日, 年)」
- 「02 Jan 2020(日 3文字英語月 年)」
さらに詳細を知りたい方
strtotime() が理解できる日付/時刻のフォーマット文字列
date() + mktime()で取得
任意の日時から未来の 時
任意の日時(指定日時)が 2021/09/21 00:00:00 の場合、指定日時から 13時間後の時 を取得する。
1 2 3 4 | <?php echo date('g', mktime(0+13,0,0,9,21,2021)).'<br>';//未来の時 echo date('G', mktime(0+13,0,0,9,21,2021)).'<br>';//未来の時 ?> |
結果は
13
となります。
任意の日付から過去の 年
任意の日時(指定日時)が 2021/09/21 00:00:00 の場合、指定日時から 2時間前の時 を取得する。
1 2 3 4 | <?php echo date('Y', mktime(0-2,0,0,9,21,2021)).'<br>';//過去の時 echo date('Y', mktime(0-2,0,0,9,21,2021)).'<br>';//過去の時 ?> |
結果は
22
となります。
使用する関数とタイムゾーン
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
タグ(=記事関連ワード)
日付
最終更新日:2021年09月22日