日時情報の取得
日付情報を連想配列で取得する―getdate関数
getdate()関数は指定したタイムスタンプの日時を連想配列として取得する関数です。連想配列となっているので、date()関数のフォーマット文字よりも直感的に目的の値が取り出せます。例えば、「年」を取り出すキーは
yearですし、「分」はminituesです。これがdate()になると「年」のフォーマット文字がYもしくはyとなりますし、「分」はiとなります。date()の利点は様々な形式で値を取り出せる事ですが、単純に年を出力したいだけ、などの場合はgetdate()関数の方が多少分かりやく、楽に使えるかもしれません。
参考関数
- getdate() ---- 日付・時刻を連想配列にして取得する
書式
- array getdate( [ int timestamp ] )
getdate()の使用方法はとても簡単で、タイムスタンプを指定するだけです。タイムスタンプを指定すると日時の情報を配列にして返してくれます。どのような配列が返ってくるかは以下を参照して下さい。
| キー | 値の意味 | 例 |
|---|---|---|
| year | 年の値(4桁) | 2005 など |
| yday | 年単位の日 | 0 ~ 365 |
| mon | 月の値(数値) | 1 ~ 12 |
| month | 月の値(フルスペル) | January ~ December |
| mday | 日付の値 | 1 ~ 31 |
| wday | 曜日の値(数値) | 0(日曜) ~ 6(土曜) |
| weekday | 曜日の値(フルスペル) | Sunday ~ Saturday |
| hours | 時の値 | 0 ~ 23 |
| minutes | 分の値 | 0 ~ 59 |
| seconds | 秒の値 | 0 ~ 59 |
| 0 | タイムスタンプ値 の値と同様。 | 1121011416 など |
getdate()を使ったサンプルです。
getdate()サンプル
- $now = getdate(); // 現在時刻の情報を持った配列を作成
- $month = $now['mon']; // 今月
- $today = $now['mday']; // 今日
- $year = $now['year']; // 今年
- // 「来年の今日」の日時情報を持った配列を作成
- $nextyear = getdate( mktime( 0, 0, 0, $month, $today, $year+1 ) );
- // 現在時刻の方の配列情報出力
- echo '<pre>';
- print_r($now);
- echo '</pre>';
- // 今日の日付と時間を出力
- echo '今日は';
- echo $year.'年'.$month.'月'.$today.'日 ';
- echo $now['minutes'].'分';
- echo $now['minutes'].'分';
- echo $now['hours'].'時';
- echo $now['minutes'].'分';
- echo $now['seconds'].'秒';
- echo "<br />\n";
- echo '来年の今日の曜日は'.$nextyear['weekday'];
出力結果
Array
(
[seconds] => 7
[minutes] => 13
[hours] => 22
[mday] => 16
[wday] => 6
[mon] => 3
[year] => 2019
[yday] => 74
[weekday] => Saturday
[month] => March
[0] => 1552741987
)
今日は2019年3月16日 13分13分22時13分7秒来年の今日の曜日はMonday
今回は「現在時刻」の配列と「来年の今日」の配列の2つを作ってます。
日付情報を配列または連想配列で取得する―localtime関数
localtime()関数も指定したタイムスタンプの日時を配列として取得する関数ですが、上記のgetdate()関数とは取得できる形式が多少違います。また、getdate()関数では日付情報を連想配列で取得していましたが、localtime()関数では連想配列で取得するか、普通の数字添え字の配列で取得するかを選択する事ができます。
参考関数
- localtime() ---- 日付・時刻を配列または連想配列にして取得する
書式
- array localtime( [ int timestamp [, bool is_associative ]] )
第1引数にタイムスタンプを、第2引数に取得する配列の形式を指定します。
第2引数の配列の形式(is_associative)は数値配列で返すか、連想配列で返すかです。省略した場合はFALSEまたは0が指定されたとみなされ、数値をキーとした通常の配列が返されます。連想配列としたければTRUEもしくは1を指定します。
| キー(数値) | キー(連想配列) | 値の意味 | 例 |
|---|---|---|---|
| 0 | tm_sec | 秒の値 | 0 ~ 59 |
| 1 | tm_min | 分の日 | 0 ~ 59 |
| 2 | tm_hour | 時の値 | 0 ~ 23 |
| 3 | tm_mday | 日付の値 | 1 ~ 31 |
| 4 | tm_mon | 月の値 | 0 ~ 11 |
| 5 | tm_year | 年の値 HTML_KOME1900年からの年数 |
100 など |
| 6 | tm_wday | 曜日の値(数値) | 0(日曜) ~ 6(土曜) |
| 7 | tm_yday | 日付の値(年単位) | 0 ~ 364 |
| 8 | tm_isdst | サマータイムフラグ | 1 or 0 |
localtime()を使ったサンプルです。
localtime()サンプル
- // 現在時刻を連想配列として取得
- $now = localtime( time(), true );
- // 配列情報を表示
- echo "<pre>";
- print_r($now);
- echo "</pre>";
出力結果
Array
(
[tm_sec] => 7
[tm_min] => 13
[tm_hour] => 22
[tm_mday] => 16
[tm_mon] => 2
[tm_year] => 119
[tm_wday] => 6
[tm_yday] => 74
[tm_isdst] => 0
)
現在時刻を連想配列で取得する―gettimeofday関数
Linux、Solaris、WindowsなどのOSではgettimeofday()関数が使用できます。gettimeofday()関数は現在時刻を連想配列にして取得してくれる関数です。
引数も必要ないので使いやすいのですが、取得してくれる情報があまり役に立たないのがちょっと難点。。
参考関数
- gettimeofday() ---- 現在の時刻を取得する
書式
- mixed gettimeofday( [ bool return_float ] )
PHP5.1.0以降オプション引数のreturn_floatがあります。この引数がtrueに設定された場合、返り値がfloat型(浮動小数点型)になります。
それ以前のバージョンでは引数は必要なく、常に
- gettimeofday();
として使います。
ローカルの現在時刻の情報を持った連想配列が返されます。連想配列のキーと要素は以下をご覧下さい。
| キー | 値の意味 |
|---|---|
| sec | タイムスタンプの値 |
| usec | マイクロ秒の値 |
| minuteswest | GMTとの差を分で表わした値 |
| dsttime | サマータイム補正の型。サマータイムなら1、そうでないなら0 |
※この関数はOSのシステムコール、 gettimeofday(2) という機能から現在時刻を生成する為、 gettimeofday(2) がサポートされていないOS上では使えません。とは言っても、Linux、Solaris、Windowsなどの主要なOSでは使えるようです。
gettimeofday()を使ったサンプルです。
gettimeofday()サンプル
- $today = gettimeofday(); // 現在時刻情報を持った配列を取得
- // 取得した連想配列の情報を表示
- echo '<pre>';
- print_r($today);
- echo "</pre>";
- // 各要素にアクセスするにはこのようにします。
- echo 'タイムスタンプ:'.$today['sec']."<br />\n"; // time()関数の値と同様
- echo 'マイクロ秒の値:'.$today['usec']."<br />\n";
- echo 'GMTとの差(分):'.$today['minuteswest']."<br />\n";
- echo 'サマータイムフラグ:'.$today['dsttime']; // サマータイムは当然0
出力結果
Array
(
[sec] => 1552741987
[usec] => 142806
[minuteswest] => -540
[dsttime] => 0
)
タイムスタンプ:1552741987マイクロ秒の値:142806
GMTとの差(分):-540
サマータイムフラグ:0





