PHP date_default_timezone_set関数の使い方

この記事のポイント

PHPでタイムゾーンを正しく設定する方法を学ぶことで、グローバルなWebアプリケーション開発に必要な基礎知識を身に付けられます。

  • アプリケーション全体のタイムゾーン設定方法
  • 日本時間や世界各国の時間表示への対応方法
  • サーバー時間とユーザー時間の違いを解決する手法

これらのポイントを理解することで、時間に関するバグを防ぎ、ユーザーにとって使いやすいシステムを構築できるようになります。

目次

date_default_timezone_set関数とは?

date_default_timezone_set関数は、スクリプト内で使用されるすべての日時関数のデフォルトタイムゾーンを設定するための関数です。この関数を使うことで、date()やtime()などの時間関係の関数が、指定したタイムゾーンに基づいて動作するようになります。

サーバーが海外にある場合や、異なる地域のユーザーに対応したWebアプリケーションを作る際に特に重要な役割を果たします。設定しなかった場合、サーバーのタイムゾーンが使用されるため、意図しない時間が表示される可能性があります。

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

基本構文

date_default_timezone_set関数の基本的な使い方は非常にシンプルです。関数名に続いてタイムゾーン識別子を文字列として渡すだけで設定が完了します。

<?php // 日本のタイムゾーンを設定 date_default_timezone_set('Asia/Tokyo'); echo date('Y-m-d H:i:s'); ?>

出力結果(例)

2025-08-14 14:30:45

※出力結果は実行した時刻により変動します。以後の現在時刻を扱うコードでも同様です。

<?php // UTC(協定世界時)を設定 date_default_timezone_set('UTC'); echo date('Y-m-d H:i:s'); ?>

出力結果(例)

2025-08-14 05:30:45

これらの例を比較すると、同じ瞬間でもタイムゾーン設定によって表示される時間が変わることがわかります。

実用例

ここでは、date_default_timezone_set関数の実際の場面を想定した具体的なコード例を紹介します。各例では、実務でよく遭遇するシチュエーションを想定し、タイムゾーン設定がどのように活用されるかを詳しく解説します。

日本国内のWebサイトから国際的なアプリケーションまで、幅広い用途に対応できるサンプルコードを用意しました。

日本時間を設定

日本のWebサイトやアプリケーションを開発する際の最も基本的な設定例です。この設定により、全ての時間表示が日本標準時になります。

<?php date_default_timezone_set('Asia/Tokyo'); $currentTime = date('Y年m月d日 H:i:s'); echo "現在時刻: " . $currentTime; ?>

出力結果(例)

現在時刻: 2025年08月14日 14:30:45

アメリカ東海岸時間を設定

グローバル展開するサービスでアメリカ東海岸のユーザー向けに時間を表示する場合の設定例です。

<?php date_default_timezone_set('America/New_York'); $meetingTime = date('F j, Y g:i A'); echo "Meeting scheduled: " . $meetingTime; ?>

出力結果(例)

Meeting scheduled: August 14, 2025 8:00 AM

ヨーロッパ中央時間を設定

ヨーロッパ地域のユーザーに対応したサービスで使用する時間設定の例です。多くのヨーロッパ諸国で使用されている標準時です。

<?php date_default_timezone_set('Europe/Berlin'); $eventDate = date('d.m.Y H:i'); echo "イベント開始時刻: " . $eventDate; ?>

出力結果(例)

イベント開始時刻: 14.08.2025 06:30

現在のタイムゾーンを確認

設定されているタイムゾーンを確認し、正しく設定されているかをチェックする例です。デバッグ時に役立ちます。

<?php date_default_timezone_set('Asia/Tokyo'); $timezone = date_default_timezone_get(); echo "現在のタイムゾーン: " . $timezone; ?>

出力結果

現在のタイムゾーン: Asia/Tokyo

複数のタイムゾーンを切り替える

同じスクリプト内で異なる地域の時間を表示したい場合の例です。国際会議のスケジュール表示などで活用できます。

<?php date_default_timezone_set('Asia/Tokyo'); $tokyoTime = date('H:i'); date_default_timezone_set('America/Los_Angeles'); $laTime = date('H:i'); echo "東京: " . $tokyoTime . " / LA: " . $laTime; ?>

出力結果(例)

東京: 14:30 / LA: 21:30

UTCと日本時間を比較

協定世界時と日本時間の差を明確に示す例です。サーバー管理やログの時刻管理で重要な概念です。

<?php date_default_timezone_set('UTC'); $utcTime = date('Y-m-d H:i:s'); date_default_timezone_set('Asia/Tokyo'); $jstTime = date('Y-m-d H:i:s'); echo "UTC: " . $utcTime . "\nJST: " . $jstTime; ?>

出力結果(例)

UTC: 2025-08-14 05:30:45
JST: 2025-08-14 14:30:45

タイムゾーン設定

設定したタイムゾーンが有効かどうかを確認し、エラーを防ぐためのチェック機能を実装した例です。

<?php $timezone = 'Asia/Tokyo'; if (date_default_timezone_set($timezone)) { echo "タイムゾーン設定成功: " . $timezone; } else { echo "タイムゾーン設定失敗"; } ?>

出力結果

タイムゾーン設定成功: Asia/Tokyo

エラーハンドリングを含む設定

不正なタイムゾーン識別子が指定された場合の対処方法を含む、より実用的なコード例です。本番環境での安定動作を保証します。

<?php $timezone = 'Invalid/Timezone'; if (!@date_default_timezone_set($timezone)) { date_default_timezone_set('Asia/Tokyo'); echo "デフォルトのタイムゾーンを設定しました"; } ?>

出力結果

デフォルトのタイムゾーンを設定しました

まとめ

date_default_timezone_set関数は、Webアプリケーションにおける時間処理の基盤となる重要な機能です。この関数を適切に活用することで、ユーザーにとって自然で使いやすい時間表示を実現できます。

date_default_timezone_set関数の活躍する場面

  • 多国籍ユーザー向けWebサービスの時間表示統一
  • eコマースサイトでの配送時間や営業時間の正確な表示
  • ログ管理システムにおけるタイムスタンプの標準化

重要なポイント

  • スクリプト実行前の早い段階でのタイムゾーン設定実行
  • 無効なタイムゾーン識別子に対するエラーハンドリング実装
  • サーバー時間とアプリケーション時間の明確な区別管理

タイムゾーン設定は一度理解すれば簡単ですが、設定を怠ると時間に関する深刻なバグを引き起こす可能性があります。特にグローバルサービスや、サーバーが海外にある場合は必須の設定といえます。正しい知識を身に付けて、信頼性の高いWebアプリケーションを構築しましょう。

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

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