mktime関数の使い方(日時の値からタイムスタンプを取得する)

PHP で用意されている組み込み関数の一つである mktime 関数の使い方です。 mktime 関数は年月日と時間を指定してその日時のタイムスタンプを取得します。

(2022 年 09 月 28 日公開 / 2022 年 09 月 28 日更新)

mktime関数の書式と基本的な使い方

mktime 関数は次のように定義されています。

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

タイムスタンプを表す数値を取得します。パラメータは右から省略可能で、
省略した値は現在の値が使われます。

引数:
  hour  時間
  minute  分
  second  秒
  month  月
  day  日
  year  年
返り値:
  タイムスタンプを表す数値

タイムスタンプとは1970年1月1日00:00:00 GMTから指定された時刻までの通算秒を表す数値です。

例えば現在の日時が2006/05/03だとすると下記のようになります。

$timestamp = mktime(9, 12, 30);
  --> 2006/05/03 9:12:30のタイプスタンプ

$timestamp = mktime(9, 12, 30, 6);
  --> 2006/06/03 9:12:30のタイプスタンプ

$timestamp = mktime(9, 12, 30, 6, 17);
  --> 2006/06/17 9:12:30のタイプスタンプ

また例えばある日付の45日後のタイムスタンプを求めたい場合には下記のようにすることになります。

// 日付を 2006/10/04 とする
$today_month = 10;
$today_day = 4;
$today_year = 2006;

$timestamp = mktime(0, 0, 0, $today_month, $today_day, $today_year);

$today_day += 45;

$new_timestamp = mktime(0, 0, 0, $today_month, $today_day, $today_year);

上記の場合、「mktime(0, 0, 0, 10, 49, 2006);」と日付の値が変な数値になってしまいますが、自動的に計算してくれます。

サンプルコード

では実際に試してみます。

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$today = getdate();
$today_month = $today['mon'];
$today_day = $today['mday'];
$today_year = $today['year'];

$timestamp = mktime(0, 0, 0, $today_month, $today_day, $today_year);

print('現在の日時は<br>');
print(date('Y年m月d日', $timestamp).'<br>');
print('です。<br>');
print('タイムスタンプは'.$timestamp.'です。<br><br>');

print('今日から45日後は<br>');

$today_day += 45;
$timestamp = mktime(0, 0, 0, $today_month, $today_day, $today_year);
print(date('Y年m月d日', $timestamp).'<br>');
print('です。<br>');
print('タイムスタンプは'.$timestamp.'です。<br>');

?>
</body>
</html>

上記ファイルを Web サーバに設置しブラウザ経由で見ると下記のように表示されます。

mktimeのテスト

-- --

PHP で用意されている組み込み関数の一つである mktime 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。