PHPのmktime()関数とは?使い方と引数・戻り値を実例付きで解説
mktime()関数とは
PHPのmktime()関数は、指定した日時からUnixタイムスタンプを生成して返す関数です。Unixタイムスタンプとは、Unixエポック(1970年1月1日 00:00:00 GMT)から指定した時刻までの経過秒数を表す長整数(long型)の値です。
この関数を使うことで、「特定の日付が何曜日だったか」「ある日時をタイムスタンプに変換して計算する」といった処理を簡単に行えます。
基本構文
mktime(hour, minute, second, month, day, year, is_dst);
引数(パラメータ)一覧
hour(時) − 時間を指定します。
minute(分) − 分を指定します。
second(秒) − 秒を指定します。
month(月) − 月を指定します。
day(日) − 日を指定します。
year(年) − 年を指定します。
is_dst − サマータイム(夏時間)のフラグです。ただし、現在は常にGMT基準で処理されるため、結果には影響しません。省略可能です。
ポイント: mktime()関数の引数は「時・分・秒・月・日・年」の順で指定する点に注意してください。「年月日」から始まる一般的な日付の書き方とは異なるため、初心者が混乱しやすい箇所です。
戻り値
mktime()関数は、引数で指定した日時に対応するUnixタイムスタンプを返します。この値は、Unixエポック(1970年1月1日 00:00:00 GMT)からの経過秒数を表す整数です。
使用例1:指定日の曜日を取得する
次の例では、2017年3月20日の曜日をdate()関数と組み合わせて表示しています。
<?php
echo "March 20, 2017 was on " . date("l", mktime(0, 0, 0, 03, 20, 2017));
?>
出力結果
March 20, 2017 was on Monday
「l(小文字のL)」フォーマット指定子により、完全な曜日名(Monday=月曜日)が出力されています。
使用例2:範囲外の値を指定した場合の挙動
mktime()関数の便利な特徴として、範囲外の値を自動的に繰り上げ・繰り下げて処理するという点があります。次の例では、月に「22」という不正な値を指定しています。
<?php
echo date("M-d-Y", mktime(0, 0, 0, 22, 9, 2018)) . "<br>";
?>
出力結果
Oct-09-2019
月に22を指定すると、「2018年 + 22か月」=「2018年1月から22か月後」つまり2019年10月として正しく計算されます。このように、月が12を超える場合は翌年に、日がその月の日数を超える場合は翌月に自動的に繰り越されるため、日付の加算・減算処理にも活用できます。
まとめ
mktime()関数は、指定した日時からUnixタイムスタンプ(1970年1月1日GMTからの経過秒数)を返す。
引数の順序は「時・分・秒・月・日・年」である点に注意。
範囲外の値(月13以上など)を指定しても、自動的に繰り上げ計算される。
date()関数と組み合わせることで、任意の日付の曜日取得やフォーマット変換が可能。
-
PHPのlog()関数とは?自然対数の計算方法と使い方を解説
定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l
-
PHPのgmmktime()関数とは?GMT日時からUnixタイムスタンプを取得する方法
gmmktime()関数は、GMT(グリニッジ標準時)の日時に対応するUnixタイムスタンプを返すPHPの組み込み関数です。サーバーのローカルタイムゾーンに依存せず、GMTを基準とした日時を扱いたい場合に便利です。 構文 gmmktime(hour, minute, second, month, day, year, is_dst); パラメータ hour − 時間を指定します。 minute − 分を指定します。 second − 秒を指定します。 month − 月を指定します。 day − 日を指定します。 year − 年を指定します。 is_dst − サマータイム(DST)フ