現在日時を秒単位のタイムスタンプで返すtime関数、マイクロ秒単位のタイムスタンプで返すmicrotime関数、 指定した日時をのタイムスタンプで返すmktime関数、strtotime関数についてみていきましょう。また、タイムスタンプから 指定したフォーマットの文字列を出力するdate関数も頻繁に使用されます。

time関数

time関数は、現在の時刻をUNIXタイムスタンプで返します。UNIXタイムスタンプとは、1970年1月1日午前0時からの経過秒数です。

time();

microtime関数

microtime関数は、現在時刻をマイクロ秒まで測定したUNIXタイムスタンプを返します。 デフォルトでマイクロ秒とUNIXタイムスタンプを半角スペースで区切った文字列を返します。

0.10151600 1228128754

microtime();

乱数ジェネレータの初期化

mt_srand(microtime()*1000000);

mktime関数

mktime関数は、指定した日付時刻に基づいて、対応するタイムスタンプを返します。

int mktime([int 時 [,int 分 [,int 秒 [,int 月 [,int 日 [,int 年 [,int サマータイム]]]]]]])

たとえば、2009年5月20日の午前11時7分のタイムスタンプを求めたい場合は次のように記述します。

$timestamp = mktime(11,7,0,5,20,2009,0);

引数を省略した場合は現在の時刻がセットされます。

strtotime関数

strtotime関数は、mktime関数と同様に、指定した日付時刻に基づいて、対応するタイムスタンプを返します。 mktime関数は引数を厳密に指定しますが、strtotime関数の引数は比較的「ゆるやかな」指定ができます。 たとえば、次のような指定が可能です。

print strtotime ("2009-05-20");
print strtotime ("2009/05/20");

date関数

date関数は、タイムスタンプで表現されているデータを指定のフォーマットに整形します。

string date(string format [,int timestamp])

たとえば、2009年5月20日の午前11時7分のタイムスタンプが$timestampにセットされているとすると、

print date('Y/m/d H:i:s T',$timestamp);

を実行すると

2009/05/20 11:07:00 JST

が得られます。

format指定説明
aam または pm を定義する
AAM または PM を定義する
d2桁の日付を定義する
D3文字の曜日 (Sun ~ Sat) を定義する
Fフルスペルの英字で月を定義する
h12時間単位 (00 ~ 12) の時間を定義する
H24時間単位 (00 ~ 23) の時間を定義する
g先頭に 0 をつけない12時間単位 (0 ~ 12) の時間を定義する
G先頭に 0 をつけない24時間単位 (0 ~ 23) の時間を定義する
i2桁の分 (00 ~ 59) を定義する
j先頭に 0 をつけない (0 ~ 31)の日を定義する
lフルスペルの英字で曜日を定義する
L閏年では 1 を、それ以外は 0 を返す
n先頭に 0 をつけない (0 ~ 12) の月を定義する
m2桁のの月 (01 ~ 12) を定義する
M3文字の月 (Jan ~ Dec) を定義する
s2桁の秒 (00 ~ 59) を定義する
S英文の序数を表わす接尾語 (th ~ nd) を定義する
t指定した月の日数 (28 ~ 31) を定義する
UUNIX時間 (1970年1月1日からの秒数) を定義する
w数値で示す曜日 (0 ~ 6) を定義する
y西暦の下2桁を示す年を定義する
Y西暦を4桁で示す年を定義する
zその年の1月1日からの通算日を定義する
Zタイムゾーンのオフセット秒 ( -43200 ~ 43200まで)