mktime

関数の概要

PHPの mktime 関数は、指定した年月日時分秒からUNIXタイムスタンプを作成します。UNIXタイムスタンプとは、1970年1月1日00:00:00(UTC)からの経過秒数であり、日時を数値で扱いたいときに便利です。日時を扱う処理で、特定の日時を基準に計算や比較をしたい場合に使われます。

パラメータの説明

  • hour (int) — 時間(0〜23)を指定します。
  • minute (int) — 分(0〜59)を指定します。
  • second (int) — 秒(0〜59)を指定します。
  • month (int) — 月(1〜12)を指定します。
  • day (int) — 日(1〜31)を指定します。
  • year (int) — 年を指定します。4桁の西暦を推奨します。

すべての引数は省略可能ですが、省略すると現在の時刻の該当する値が使われます。

戻り値

mktime は指定された日時に対応するUNIXタイムスタンプ(整数値)を返します。日時が不正な場合は false を返します。

使用例

基本的な使い方

<?php
// 2024年6月1日 12時30分0秒のタイムスタンプを取得
$timestamp = mktime(12, 30, 0, 6, 1, 2024);
echo $timestamp;
?>

指定した日時のUNIXタイムスタンプを取得できます。この例では2024年6月1日12時30分0秒のタイムスタンプを表示します。

現在の日時で時間だけ変更する

<?php
// 現在の日付の14時0分0秒のタイムスタンプ
$timestamp = mktime(14, 0, 0);
echo date('Y-m-d H:i:s', $timestamp);
?>

時間以外のパラメータは省略すると現在の日時の値が使われます。この例では、今日の14時00分00秒のタイムスタンプを作成しています。

日付の加減算に利用する例

<?php
// 明日の午前0時0分0秒のタイムスタンプを計算
$tomorrow = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));
echo date('Y-m-d H:i:s', $tomorrow);
?>

現在の日付の翌日を求める際に、日を+1して指定しています。時間は午前0時に設定しているので、翌日の開始時刻が取得できます。

関連する関数

  • time() — 現在のUNIXタイムスタンプを取得
  • date() — タイムスタンプを指定した書式で表示
  • strtotime() — さまざまな文字列形式の日時をタイムスタンプに変換
  • getdate() — タイムスタンプから日時配列を取得

まとめ

mktime は、指定日時を基にUNIXタイムスタンプを作成するPHPの便利な関数です。日時の情報を数値で管理できるため、計算や比較が容易になります。実務では特定の日付の時刻データを扱う際に非常に役立つため、パラメータの使い方と戻り値の理解を深めておくことをおすすめします。