PHPでは、日付や時間に関する組み込み関数が多数定義されています。ここでは、一般的によく利用されている関数を中心にして、日付と時間の扱いについて解説します。PHPで日付を扱うとき、その基本となる日数の算出に必要な「暦」が幾つか存在しています。どれを基本の暦にするのかは、作者の感性に依ります。UTCJavaScriptでも利用されていますが、PHPでも世界協定時を利用することは可能です。また、世界協定時を使うための関数として、time()、date()、getdate() が定義されており、世界各地のローカルタイムを参照できるようになります。なお、日本時間は、世界協定時から9時間加えることで参照できます。GMTUTCにその座を譲る格好となっています。Windowsマシンでは、このグリニッジ標準時に、ローカル時間との差分を計算して時刻を示しています。日本時間はグリニッジ標準時から、9時間加えることで求められます。UNIX時UNIXでは、1970年1月1日午前0時00分00秒からの経過秒数を基準とした時間で、UNIXでは 31536000 ( =365× 24× 60× 60 ) と表現されます。UNIX時は、プログラムとの相性がよいという唯一の長所がありますが、桁数が多く、見た目に全く理解できない欠点があります。PHPでは、関数 JDToGregorian()、GregorianToJD() を使うことにより、ユリウス日との相互運用が可能となっています。PHPでは、関数 JDToFrench()、FrenchToJD() を使うことにより、ユリウス日との相互運用が可能となっています。JDToJewish()、JewishToJD() を使うことにより、ユリウス日との相互運用が可能となっています。JJ.Scaligerという人が、月のない日付を考案しました。基本的には、紀元前4713年1月1日12時から数えた日付を表わします。PHPでは、それぞれの暦を相互運用するとき、このユリウス日を必ず使います。ユリウス日の日付を参照するために関数が幾つか用意され、それに基づいて目的の日付を取得します。なお、ユリウス日とユリウス暦はまったく異なることに注意してください。| 関数 | 意味 |
|---|---|
| unixtojd() | UNIX時間(1790年1月1日からの秒数)をユリウス日に変換する |
| jdtounix() | ユリウス日を UNIX時間に変換する |
| FrenchToJD() | フランス革命暦(共和暦)をユリウス日に変換する |
| JDToFrench() | ユリウス日をフランス革命暦に変換する |
| JDToJulian() | ユリウス日をユリウス暦に変換する |
| JulianToJD() | ユリウス暦をユリウス日に変換する |
| JDToJewish() | ユリウス日をユダヤ暦に変換する |
| JewishToJD | ユダヤ暦をユリウス日に変換する |
PHPで Webアプリケーションを開発する際、日付と時間は大変重要になります。この節では、一般的に利用されている代表的な時間を扱う関数について解説します。getdate()関数getdate()関数 を使います。この関数には 連想配列として、以下のようなインデックスが定義されています。second ---- 現在の秒を定義するmimutes --- 現在の分定義するhours ----- 現在の時定義するmday ------ 現在の月次の日付を定義するwday ------ 現在の曜日番号を定義するmon ------- 現在の月を定義するyear ------ 現在の年を定義するyday ------ その年の通算日を定義するweekday --- 現在の曜日の文字列を定義するmonth ------- 現在の月の文字列を定義する
<?php
$today = getdate();
print("$today[year]年$today[mon]月$today[mday]日<br>\n");
print("今年1月1日から $today[yday]日目です<br>\n");
print("$today[weekday] $today[month]/$today[mday]/$today[year]");
?>
date()関数getdate()関数では、連想配列に参照した日付の表現方法を示しますが、もっと自由なフォーマットで表現したい場合には、date()関数 を使います。date()関数では、日付を参照するだけでなく、ローカル時間の時刻も合わせて参照することができます。ただし、date()関数の引数がない場合はその限りではありませんが、サーバによっては引数を指定しないと「警告」が出る場合もあります。a --------- am または pm を定義するA --------- AM または PM を定義するd --------- 2桁の日付を定義するD --------- 3文字の曜日 (Sun 〜 Sat) を定義するF --------- フルスペルの英字で月を定義するh --------- 12時間単位 (00 〜 12) の時間を定義するH --------- 24時間単位 (00 〜 23) の時間を定義するg --------- 先頭に 0 をつけない12時間単位 (0 〜 12) の時間を定義するG --------- 先頭に 0 をつけない24時間単位 (0 〜 23) の時間を定義するi --------- 2桁の分 (00 〜 59) を定義するj --------- 先頭に 0 をつけない (0 〜 31)の日を定義するl --------- フルスペルの英字で曜日を定義するL --------- 閏年では 1 を、それ以外は 0 を返すn --------- 先頭に 0 をつけない (0 〜 12) の月を定義するm --------- 2桁のの月 (01 〜 12) を定義するM --------- 3文字の月 (Jan 〜 Dec) を定義するs --------- 2桁の秒 (00 〜 59) を定義するS --------- 英文の序数を表わす接尾語 (th 〜 nd) を定義するt --------- 指定した月の日数 (28 〜 31) を定義するU --------- UNIX時間 (1970年1月1日からの秒数) を定義するw --------- 数値で示す曜日 (0 〜 6) を定義するy --------- 西暦の下2桁を示す年を定義するY --------- 西暦を4桁で示す年を定義するz --------- その年の1月1日からの通算日を定義するZ --------- タイムゾーンのオフセット秒 ( -43200 〜 43200まで)date()関数の引数に、以上のような値を定義することで、様々な形のフォーマットを提供し、表現します。
<?php
$today = date("Y/m/d l H:i:s");
print($today);
?>