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

広告

年月日と時間を指定して、その日時のタイムスタンプを取得する方法について見ていきます。タイムスタンプとは1970年1月1日00:00:00 GMTから指定された時刻までの通算秒を表す数値です。

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

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

例えば現在の日時が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);」と日付の値が変な数値になってしまいますが、自動的に計算してくれます。

サンプルプログラム

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

functest82.php

<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>

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

mktimeのテスト

( Written by Tatsuo Ikura )