PHP dateの使い方

この記事のポイント

実際の開発では「今日の日付を表示したい」ときや「特定の形式で時刻を表示したい」というケースがよくあります。PHPのdate関数を使うと、このような日時の表示を自由自在に行うことができます。

この記事を読むと、次のようなことが身に付きます。

  • 現在の日時をさまざまな形式で表示する方法がわかる
  • 日付フォーマットの指定方法と主要な文字の使い方を習得できる
  • 過去や未来の特定の日時を表示するテクニックを学ぶ
  • 実際のWebアプリケーション開発で使える実践的なパターンを知る

deta関数をマスターして、より実用的で見やすいPHPコードを書けるようになりましょう。

目次

dateとは?

date関数は、現在の時刻や指定した時刻を、見やすい形式で表示するための関数です。

例えば、「ブログの投稿日時を表示したい」や「ユーザーのログイン時刻を記録したい」といった場面で使います。

この関数が便利なのは、同じ時刻でも「2024年1月15日」や「January 15, 2024」など、さまざまな形式で表示できるという点です。

date関数の特徴を見てみましょう。

date関数の特徴

  • 年月日や時分秒を自由自在にフォーマットできる
  • 現在の時刻だけでなく、過去や未来の時刻も表示可能
  • 日本語形式や英語形式など、さまざまな表示形式に対応
  • time関数と組み合わせることで、より柔軟な時刻処理が可能

フォーマットとは、日時の表示形式のことです。例えば「Y-m-d」というフォーマットを使うと「2024-01-15」のような形式で表示され、「Y年m月d日」を使うと「2024年01月15日」のような形式になります。

実際の開発では、ユーザーに日時情報を提供したり、ログの記録時刻を管理したりする際に欠かせない機能です。

【関連】
PHPをもっと詳しく学ぶならpaizaラーニング

基本構文

date関数の使い方はシンプルです。基本的な形は「date(フォーマット, タイムスタンプ)」となります。

第一引数のフォーマットで出力形式を指定し、第二引数のタイムスタンプは省略可能で、省略時は現在時刻が使用されます。

まずは、よく使われるフォーマット文字を覚えておきましょう。

主要なフォーマット文字

  • Y:4桁の年(例:2024)
  • m:月(01-12)
  • d:日(01-31)
  • H:24時間形式の時(00-23)
  • i:分(00-59)
  • s:秒(00-59)

実際に、date関数をどう使うのか見てみましょう。

<?php echo date('Y-m-d');

出力(例)

2024-01-15

このプログラムでは、date('Y-m-d')で現在の日付を「年-月-日」の形式で表示しています。
ちなみに、実行すると出力されるのはUTC形式のため、日本時間とは9時間の時差があります(以後のコードも同様)。

後述しますが、date_default_timezone_set('Asia/Tokyo')などを用いることで日本時間として表示できるので、疑問や不安を持った方も今は安心して次に進んでください。

次に、日本語形式で時刻も含めて表示する例を見てみましょう。

<?php echo date('Y年m月d日 H:i:s');

出力(例)

2024年01月15日 14:30:25

このプログラムでは、年月日に加えて時分秒も表示しています。

また、フォーマット文字の間に「年」「月」「日」や「:」などを入れることで、見やすい形式にできます。

実用例

ここからは、date関数を使ったコード例を見ていきましょう。日時表示、期間計算、国際化対応など、実務で活用するような処理です。

このような例を通じて、「時刻を取得してさまざまな形式で表示する」というdate関数の基本的な使い方と考え方を学びましょう。

date関数を使いこなせるようになると、ユーザーにとって見やすい時刻表示ができるようになり、より親しみやすいWebアプリケーションを作れるようになります。

どの例も動物を題材にした身近な内容になっているので、プログラミング初心者の方でも理解しやすいはずです。

この機会にdete関数を使いこなせるようになりましょう。

現在の日時をシンプルに表示

現在の日時をそのまま表示する方法です。最も基本的な使い方だといえるでしょう。

Webサイトの更新日時やログイン時刻の記録など、リアルタイムの情報表示に最適です。フォーマットを変更するだけで、さまざまな表示形式に対応できます。

<?php $currentTime = date('Y-m-d H:i:s'); echo "ネコがログインした時刻: " . $currentTime;

出力(例)

ネコがログインした時刻: 2024-01-15 14:30:25

date('Y-m-d H:i:s')で現在の日時を「年-月-日 時:分:秒」の形式で取得し、$currentTimeに保存しています。

この形式は国際的によく使われるISO形式で、システム間でのデータのやり取りにも適しています。
一般的に、プログラミングやデータ管理では、この形式を使うのがベストプラクティスだということを覚えておきましょう。

曜日を含む日付表示

曜日情報を含めた日付表示により、ユーザーにとってより親しみやすい時刻情報を提供できます。
スケジュール管理アプリケーションやイベント告知などで重宝する表示形式です。

<?php $today = date('Y年m月d日(D)'); echo "イヌの散歩予定日: " . $today;

出力(例)

イヌの散歩予定日: 2024年01月15日(Mon)

このプログラムでは、フォーマット文字にDを追加して曜日を表示しています。Dは英語の曜日の短縮形(Mon、Tue、Wedなど)で表示します。

ちなみに、曜日を表示するフォーマット文字には他にも種類があります。

曜日のフォーマット文字

  • D(DayのD):短縮形(Mon、Tue、Wed、Thu、Fri、Sat、Sun)
  • l(long termのl):完全な英語曜日名(Monday、Tuesday、Wednesday など)
  • w(week/weekdayのw):数値の曜日(0=日曜日、1=月曜日、2=火曜日...6=土曜日)

さまざまな表記ができるということを覚えておきましょう。

特定のタイムスタンプを日付に変換

過去や未来の特定時点を表示したい場合は、第二引数にタイムスタンプを指定します。

データベースに保存された時刻データの表示や、予約システムでの日時表示に活用できる重要なテクニックです。

<?php $timestamp = mktime(9, 30, 0, 6, 15, 2024); $formattedDate = date('Y年m月d日 H時i分', $timestamp); echo "ウサギの診察予約: " . $formattedDate;

出力結果

ウサギの診察予約: 2024年06月15日 09時30分

このプログラムでは、mktime()関数で特定の日時(2024年6月15日 9時30分)をタイムスタンプに変換し、それをdate関数で見やすい形式に変換しています。

mktime()の引数の順番は「時、分、秒、月、日、年」であることも押さえておきましょう。

月初と月末の日付を取得

月初や月末の日付計算は、売上集計や期間限定キャンペーンの管理で頻繁に使用されます。date関数を用いることで、動的な期間設定が可能になり、自動化されたシステムを構築することができます。

<?php $monthStart = date('Y-m-01'); $monthEnd = date('Y-m-t'); echo "トリの餌やり期間: " . $monthStart . " から " . $monthEnd;

出力(例)

トリの餌やり期間: 2024-01-01 から 2024-01-31

2つの特別なフォーマット文字を使っています。01は月の1日目を表し、tはその月の最終日を自動的に計算してくれます。

tは非常に便利なフォーマット文字です。2月なら28日(うるう年は29日)、4月なら30日、1月なら31日といったように、月ごとの日数の違いを自動的に処理してくれるからです。

時刻のみを表示

時刻情報のみが必要な場合の表示方法です。リアルタイム時計の実装や、営業時間の表示、システムの稼働時間監視などで活用されます。

シンプルながら実用性は高いです。

<?php $currentTime = date('H:i:s'); echo "ハムスターの活動時刻: " . $currentTime;

出力(例)

ハムスターの活動時刻: 14:30:25

H:i:sのフォーマットにより、24時間形式で「時:分:秒」が表示されます。

ちなみに、12時間形式で表示したい場合はg:i:s Aを使うと「2:30:25 PM」のような形式になります。

昨日と明日の日付を計算

相対的な日付計算により、昨日や明日の日付を簡単に取得できます。

日報のシステムや予定管理アプリケーションなど、基準日からの相対的な日付が必要な場面で重宝する機能です。

<?php $yesterday = date('Y-m-d', strtotime('-1 day')); $tomorrow = date('Y-m-d', strtotime('+1 day')); echo "キツネの行動記録: 昨日" . $yesterday . " 明日" . $tomorrow;

出力(例)

キツネの行動記録: 昨日2024-01-14 明日2024-01-16

strtotime()関数を使って相対的な日付を計算しています。strtotime('-1 day')で昨日、strtotime('+1 day')で明日のタイムスタンプを取得し、それをdate関数で表示しています。

strtotime()は「-1 week」(1週間前)や「+1 month」(1か月後)なども指定でき、柔軟な日付計算が可能です。

実際にコードを書き換えて確かめてみてください。

英語形式での日付表示

国際的なWebサイトやアプリケーションでは、英語形式での日付表示が求められることがあります。
グローバル対応のシステム開発において、多言語対応は必須です。

<?php $englishDate = date('F j, Y g:i A'); echo "ライオンの狩りの時刻: " . $englishDate;

出力(例)

ライオンの狩りの時刻: January 15, 2024 2:30 PM

このプログラムでは、英語形式のフォーマット文字を使用しています。

  • F(Full month nameのF):月の英語名(January、February、March など)
  • j(just numberのj):先頭の0を除いた日(1、2、3...31)
  • g(general time formatのg):12時間形式の時(1、2、3...12)
  • A(AM/PMのA):AM/PM表示(AM、PM)

この形式は欧米圏では一般的で、国際的なWebサイトでよく使用されます。

タイムゾーンを考慮した時刻表示

グローバルなWebアプリケーションでは、タイムゾーンの考慮が不可欠です。date_default_timezone_set関数と組み合わせることで、地域に応じた正確な時刻表示が実現できます。

<?php date_default_timezone_set('Asia/Tokyo'); $tokyoTime = date('Y-m-d H:i:s T'); echo "パンダの食事時間: " . $tokyoTime;

出力(例)

パンダの食事時間: 2024-01-15 14:30:25 JST

このプログラムでは、date_default_timezone_set('Asia/Tokyo')で日本時間に設定し、フォーマット文字Tでタイムゾーンの略称(JST)も表示しています。

他にも「America/New_York」(アメリカ東部時間)や「Europe/London」(イギリス時間)など、世界各地のタイムゾーンを指定できます。

まとめ

date関数は、現在の時刻や指定した時刻をさまざまな形式で表示する重要な機能です。この記事では、date関数の基本的な構文から実用的な応用例まで解説しました。

date関数が活躍するのは次のような場面です。簡単に振り返っておきましょう。

date関数が活躍する場面

  • ユーザーに見やすい形式で日時を表示したいとき
  • ログイン時刻や投稿時刻などの記録を表示したいとき
  • 予約システムやスケジュール管理で日時を計算したいとき
  • 国際的なサイトで多言語対応の日付表示が必要なとき

date関数を使う上で押さえておきたいポイントは下記の通りです。

重要なポイント

  • フォーマット文字の組み合わせで自由な表示形式を実現できる
  • タイムスタンプ指定により、過去や未来の特定の時点を処理できる
  • タイムゾーン設定と併用でグローバル対応が実現できる

初めてPHPを学ぶ方も、この記事で紹介したdate関数の基本的な使い方と8つの実用例を参考に、コードを書いてみてください。

日時処理を適切に行えるようになれば、ユーザーにとって見やすく、使いやすいWebアプリケーションを作ることができるようになります。

実際、日時処理が必要な場面は多く、date関数を活用するとその便利さに気付けると思います。

ぜひdate関数を正しく理解し、より実用的で親しみやすいPHPプログラムを作成できるようになりましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. PHPのリファレンス記事一覧
  4. PHP dateの使い方