日付や時刻に関する情報を扱いたい場合に使用できる関数の一つに、「date」 関数があります。
特定の日時についての情報が取得できるだけでなく、指定したフォーマットに基づいて文字列を整形することができる便利な関数です。
今回の記事では、date関数の具体的な使用方法について解説していきたいと思います。
PHPのdate関数とは?
date関数は、日付や時刻を任意のフォーマットで取得するための関数です。
この関数を使用することにより、現在日時の取得や、Unixのタイムスタンプを元にした特定日時の取得が可能となります。
Unixのタイムスタンプとは、1970年1月1日からの経過秒数を表す整数値のことを指します。
date関数で現在時点よりも前、あるいは後の日付や時間を取得する場合は、このタイムスタンプを使用します。
date関数の使い方
それでは、date関数の基本的な使い方から順に見ていきましょう。
基本構文
まずは、date関数の基本構文から見ていきましょう。
関数を使用する際は、以下のような構文で記述します。
【基本構文】
date(フォーマット, タイムスタンプ)
第1引数では、取得した日時の表示形式(フォーマット)を指定します。
第2引数にはタイムスタンプを指定しますが、こちらは省略が可能です。
タイムスタンプを省略した場合は、現在日時を取得することができます。
また、関数の戻り値は文字列が返却されます。
以下のサンプルコードで、実際の動きを見てみましょう。
【サンプルコード】
<?php
// 現在の日付を取得する
echo date('Y/m/d'), "\n";
// 現在の時刻を取得する
echo date('H:i:s'), "\n";
// タイムスタンプを使用する
echo date('Y年n月j日 H時i分s秒', 60), "\n";
?>
【実行結果】
2025/09/05
02:25:39
1970年1月1日 00時01分00秒
※実行結果の上2行分は実行時点の日時によって変動します。
Unixのタイムスタンプは1970年1月1日の0時0分から何秒経過したかを表す数値なので、例えば上記の例のように 「60」 を指定すると、1分経過した日時が表示されます。
指定できるフォーマット文字の一覧
フォーマットの指定には、それぞれ年月日や時刻を表すための文字 (フォーマット文字) を使用することができます。
その中でもよく使用される代表的なフォーマット文字について、以下の表にまとめました。
文字 | 説明 | 表示例 |
---|---|---|
Y | 4桁以上の年。( 紀元前の場合は - が付く ) | 例: -0055, 2010, 10151 |
y | 2桁の年。 | 例: 01, 70 |
m | 0埋め有りの月。( 01~12 ) | 例: 01, 12 |
n | 0埋め無しの月。( 1~12 ) | 例: 1, 12 |
d | 0埋め有りの日。( 01~31 ) | 例: 01, 31 |
j | 0埋め無しの日。( 1~31 ) | 例: 1, 31 |
H | 24時間形式の時。( 00〜23 ) | 例: 00, 23 |
h | 12時間形式の時。( 00〜12 ) | 例: 01, 12 |
i | 分。( 00〜59 ) | 例: 00, 59 |
s | 秒。( 00〜59 ) | 例: 00, 59 |
A | 午前または午後(大文字) | 例: AM, PM |
a | 午前または午後(小文字) | 例: am, pm |
l (小文字のL) | フルスペル形式の曜日。 | 例: Sunday, Monday |
D | 3文字形式の曜日。 | 例: Sun, Mon |
日時を指定して表示する
タイムスタンプを使用することにより、特定の日時を取得することができると解説しましたが、実際に取得したい日時のタイプスタンプを自前で計算しようとすると、少々手間がかかってしまいます。
そこで、date関数と組み合わせて使用すると有用なのが、strtotime関数です。
strtotime関数は、特定の日時のタイムスタンプを取得することができる関数です。
date関数の第2引数に strtotime関数の戻り値を使用することにより、タイムスタンプを計算する手間を省くことができます。
使用する際の基本構文は以下の通りです。
【基本構文】
strtotime(日時, タイムスタンプ)
strtotime関数でタイムスタンプを取得する方法は2通りあり、以下のどちらかの方法で取得します。
- 絶対日時を取得する
- 相対日時を取得する
第1引数にはタイムスタンプを取得したい日時を指定しますが、どちらの方法を使用するかによって記述方法が変わります。
(それぞれの指定方法については下記で詳しく解説します)
第2引数には、取得する際に基準となる日時のタイムスタンプを指定します。
上述した取得方法のうち、相対日時を取得する方法で主に使用される引数です。
絶対日時を取得する
絶対日時を取得する際は、対象となる日付や時間を第1引数に直接記述します。
以下のサンプルコードで実際の動きを見てみましょう。
【サンプルコード】
<?php
echo strtotime('2015/01/31 12:00:30'), "\n";
?>
【実行結果】
1422705630
date関数と組み合わせて使うことで、日時をフォーマットして表示することができます。
【サンプルコード】
<?php
$timestamp = strtotime('2015/01/31 12:00:30');
echo date('Y年n月j日 H時i分s秒', $timestamp), "\n";
?>
【実行結果】
2015年1月31日 12時00分30秒
相対日時を取得する
strtotime関数では、相対日時を取得することもできます。
相対日時とは、「昨日」 「明日」 「来月」 といったように、特定の日時を基準として日付や時間を指定する表現のことを言います。
相対日時を取得する場合は、数値と単位を組み合わせて記述します。
【サンプルコード】
<?php
$timestamp = strtotime('-5 hours');
echo date('Y年n月j日 H時i分s秒', $timestamp), "\n";
$timestamp = strtotime('+5 months');
echo date('Y年n月j日 H時i分s秒', $timestamp), "\n";
?>
【実行結果】
2025年9月4日 22時21分25秒
2026年2月5日 03時21分25秒
第2引数を省略した場合は、現在日時を基準とした相対日時が取得できます。
基準となる日時を任意のものに変更したい場合は、第2引数に基準とする日時のタイムスタンプを指定しましょう。
【サンプルコード】
<?php
$timestamp = strtotime('2015/01/31 12:00:00');
$date = strtotime('-30 minutes', $timestamp);
echo date('Y年n月j日 H時i分s秒', $date), "\n";
$date = strtotime('+1 year', $timestamp);
echo date('Y年n月j日 H時i分s秒', $date), "\n";
?>
【実行結果】
2015年1月31日 11時30分00秒
2016年1月31日 12時00分00秒
日付のタイムゾーンを指定する
もしかすると、これまでにコードを試してきた中で、
「実際に日時を取得してみたものの、現在の時刻と結果がずれている」
といったケースが発生した方が、中にはいるのではないでしょうか。
date関数を使用する際に重要になってくるのが、タイムゾーンの設定です。
場合によっては、この設定が原因で上記のような問題が発生する場合があります。
デフォルトのタイムゾーンの設定は、使用するサーバーごとに異なります。
そのため、date関数で日時を取得する際は、あらかじめ設定ファイルやコードで使用したいタイムゾーンに設定しておく必要があります。
設定ファイルでタイムゾーンを設定する場合は、「php.ini」 ファイル内の 「date.timezone」 の項目に、任意のタイムゾーンを指定します。
【記述例】
date.timezone = "Asia/Tokyo"
コードで設定を行う場合は、date_default_timezone_set関数を使用します。
【サンプルコード】
<?php
// 日本に設定
date_default_timezone_set('Asia/Tokyo');
echo date('Y/m/d H:i:s'), "\n";
// アメリカに設定
date_default_timezone_set('America/Adak');
echo date('Y/m/d H:i:s'), "\n";
?>
【実行結果】
2025/09/03 17:10:18
2025/09/02 23:10:18
日付同士を比較する
ケースによっては、日付順にデータを並べ替えるなどの目的で、特定の日付同士を比較する必要がある場合も存在するかと思います。
日付の比較を行う場合は、タイムスタンプを使用するか、もしくは対象の日付ごとに DateTimeクラスのオブジェクトを生成して、値の大小を比較しましょう。
【サンプルコード】
<?php
$date1 = new DateTime('2025-01-31');
$date2 = new DateTime('2026-01-31');
if ($date1 == $date2){
echo "同じ日付です";
} else if ($date1 > $date2){
echo "date1の方が後です";
} else {
echo "date2の方が後です";
}
?>
【実行結果】
date2の方が後です
曜日を取得する
曜日を取得したい場合は、フォーマット文字の 「 l (小文字のL) 」 もしくは 「 D 」 を使用します。
【サンプルコード】
<?php
echo date('Y/m/d l'), "\n";
echo date('Y/m/d D'), "\n";
?>
【実行結果】
2025/09/03 Wednesday
2025/09/03 Wed
または、「 w 」 で各曜日に対応する数字を取得することもできます。
日:0 、 月:1 、 火:2 、 水:3 、 木:4 、 金:5 、 土:6
例えば、サーバーに送るパラメータに数値を使用したい場合など、ケースに応じて通常の曜日表記と使い分けることができます。
【サンプルコード】
<?php
$date1 = strtotime('2020/01/01');
$date2 = strtotime('2020/01/02');
$date3 = strtotime('2020/01/03');
echo date('l w', $date1) . "\n";
echo date('l w', $date2) . "\n";
echo date('l w', $date3) . "\n";
?>
【実行結果】
Wednesday 3
Thursday 4
Friday 5
まとめ
いかがでしたか?今回は、date関数の使用方法について解説しました。
日時に関する情報は、様々な場面で活用する機会があるため、必然と使用頻度も高くなる関数の1つです。
しっかりとマスターして、実際の開発に活かしてみてください。
PHPの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、PHPに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。