PHP マニュアル
前のページ |  | 次のページ

# mktime

(PHP 3, PHP 4, PHP 5)

mktime -- 日付を Unix のタイムスタンプとして取得する

## 説明

int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )

与えられた引数に従って UNIX のタイムスタンプを返します。 このタイムスタンプは、Unix epoch(1970年1月1日00:00:00 GMT)から 指定された時刻までの通算秒を表す長整数です。

引数は右から順に省略することができます。省略された引数は、 ローカルの日付と時刻に従って、現在の値にセットされます。

## パラメータ

`hour`

  時

`minute`

  分

`second`

  秒

`month`

  月

`day`

  日

`year`

  年。2 桁または 4 桁の値を指定可能で、 0-69 の間の値は 2000-2069 に、70-100 は 1970-2000 にマップされます。 今日最も一般的なシステム、すなわち time_t が 32 ビットの符号付き整数である システムでは `year` として有効な範囲は 1901 から 2038 の間ですが、この制限は PHP 5.1.0 以降なくなりました。

`is_dst`

  このパラメータはサマータイム (DST) の時に1にセットされ、 そうでない時に0、サマータイムであるかどうかが不明である場合に-1 にセットされます。 不明な場合、PHP はサマータイムかどうか推測しようとします。 PHP を実行しているシステムで DST が有効になっている、もしくは `is_dst` が 1 にセットされている場合、 一部の時刻は有効になりません。 もし DST が有効で例えば 2:00 の場合、2:00 から 3:00 までの全ての時刻は 無効になり、mktime() は不確定な値 (通常は負数) を返します。いくつかのシステム (例えば Solaris 8) は真夜中に DST を有効にしますので、DST が有効なときの 0:30 は前日の 23:30 と評価されます。

  > 注意: PHP 5.1.0 以降、このパラメータは廃止されました。その結果、 新しいタイムゾーン処理機能がかわりに使用されます。

## 返り値

mktime() は与えられた引数の Unix タイムスタンプを返します。引数が不正な場合、 この関数は `FALSE` を返します（PHP 5.1 より前のバージョンでは `-1` を返していました）。

## エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に `E_NOTICE` を発生させます。また、システム設定のタイムゾーンあるいは環境変数 `TZ` を使用した場合には `E_STRICT` を発生させます。 date_default_timezone_set() も参照ください。

## 変更履歴

バージョン | 説明
--- | ---
3.0.10 | `is_dst` パラメータが追加されました
5.1.0 | `is_dst` パラメータは廃止されました。 エラー時には `-1` ではなく `FALSE` を返すようになりました。 年月日がすべてゼロとすることが可能になりました。
5.1.0 | タイムゾーンがおかしい場合に `E_STRICT` や `E_NOTICE` が発生するようになりました。

## 例

例 1. mktime() の例

mktime() は入力日付の有効性を確認しており、 範囲外の入力を自動的に修正して計算してくれるので便利です。 例えば、以下の各行はいずれも文字列 "Jan-01-1998"を出力します。

`<?php echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98)); ?>`

例 2. 次月の最後の日

指定した月の最後の日は次の月の -1 番目の日ではなく、"0" 番目の日 として表すことが可能です。以下の例はともに文字列"The last day in Feb 2000 is: 29" を出力します。

`<?php $lastday = mktime(0, 0, 0, 3, 0, 2000); echo strftime("Last day in Feb 2000 is: %d", $lastday); $lastday = mktime(0, 0, 0, 4, -31, 2000); echo strftime("Last day in Feb 2000 is: %d", $lastday); ?>`

## 注意

注意
PHP 5.1.0 より前のバージョンでは、負の値のタイムスタンプは Windows の どのバージョンにおいてもサポートされていませんでした。 したがって、年の有効範囲は 1970 年から 2038 年の間のみに限定されていました。

## 参考

gmmktime()
date()
time()

前のページ | ホーム | 次のページ
microtime | 上に戻る | strftime