現在日時を秒単位のタイムスタンプで返す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指定 | 説明 |
|---|---|
| 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まで) |