PHPのUnixタイムスタンプの使い方を徹底解説!初心者でもわかる日付と時間の扱い方
生徒
「先生、PHPで時間や日付を扱いたいんですが、『タイムスタンプ』って何のことですか?」
先生
「タイムスタンプというのは、時間を数字で表したもので、特に『Unixタイムスタンプ』といって、1970年1月1日午前0時からの秒数を使う方法が一般的です。」
生徒
「なるほど。でも、なぜそんな数字を使うんですか?」
先生
「実は、コンピュータにとっては『年月日』よりも、秒で表す方が扱いやすいからなんです。では、具体的にPHPでの使い方を一緒に見ていきましょう!」
1. Unixタイムスタンプとは?
Unix(ユニックス)タイムスタンプとは、1970年1月1日00:00:00(世界標準時、UTC)からの経過秒数を数字で表したものです。
たとえば「1694006400」という数字があった場合、それは「2023年9月6日 00:00:00」を表しています。
PHPではこのタイムスタンプを使うことで、日付の比較・計算・保存などがとても簡単になります。
2. 現在のUnixタイムスタンプを取得する方法
今この瞬間のタイムスタンプをPHPで取得するには、time()という関数を使います。とても簡単です。
<?php
$now = time();
echo "現在のUnixタイムスタンプは: " . $now;
?>
time()は、何も引数を渡さずに使えます。毎秒値が変わりますので、今の「時間」を正確に数字で取得できます。
3. タイムスタンプを「年月日」に変換する
数字のままだと人間には読みにくいので、「2025年9月3日」などの形式に変換してみましょう。PHPのdate()関数を使います。
<?php
$timestamp = 1756857600;
$format = date("Y年m月d日 H時i分s秒", $timestamp);
echo $format;
?>
Yは年、mは月、dは日、Hは時、iは分、sは秒を意味します。
4. 「年月日」をタイムスタンプに変換する方法
逆に、「2025年9月3日」のような日付から、Unixタイムスタンプに変換することも可能です。strtotime()という関数を使います。
<?php
$timestamp = strtotime("2025-09-03 00:00:00");
echo $timestamp;
?>
strtotime()は、日付の文字列を受け取って、それをタイムスタンプに変換してくれます。
5. タイムスタンプを使って日付の差を計算してみよう
たとえば「イベントまであと何日?」を計算したいとき、Unixタイムスタンプを使えば簡単です。
<?php
$today = time();
$event = strtotime("2025-12-31");
$diff = $event - $today;
$days = floor($diff / 86400); // 1日=86400秒
echo "イベントまであと " . $days . " 日です。";
?>
このように「秒数」で計算してから、1日が86400秒であることを利用して「日数」に変換します。
6. タイムスタンプの保存や比較にも使える
Unixタイムスタンプは、データベースに保存したり、ログに記録したり、未来の予定を比較するのにとても便利です。
たとえば、ユーザーの最終ログイン時間をタイムスタンプで保存しておけば、「最後のログインから何日経ったか」もすぐに計算できます。
7. タイムゾーン(時間帯)に注意しよう
PHPのタイムスタンプは、基本的にサーバーの設定によって「どこの国の時間」を基準にするかが変わります。
日本時間に合わせたい場合は、次のように設定を入れておきましょう。
<?php
date_default_timezone_set("Asia/Tokyo");
?>
これで、日本時間でタイムスタンプが扱えるようになります。
8. 応用:現在時刻から1時間後のタイムスタンプを取得
たとえば「1時間後に処理をしたい」「30分後の予約を作成したい」といったケースでは、以下のように計算します。
<?php
$now = time();
$afterOneHour = $now + 3600;
echo "1時間後のタイムスタンプは: " . $afterOneHour;
?>
3600は「1時間=3600秒」を意味します。分単位なら60、日数なら86400を使います。
まとめ
今回は、PHPにおけるUnixタイムスタンプの基本から応用までを丁寧に学びました。Unixタイムスタンプとは、1970年1月1日午前0時(UTC)からの経過秒数を意味する、コンピュータにとって扱いやすい時間の表現方法です。PHPではこのタイムスタンプを使うことで、日付の取得・変換・比較・計算が非常に効率よく行えます。
特に、現在時刻を取得するtime()、人間が読みやすい形式に変換するdate()、日付文字列をタイムスタンプに変換するstrtotime()の使い方は、日付処理をするうえで頻出する重要な関数です。また、1日や1時間を秒単位で計算することで、イベントまでの日数や経過時間を自在に求めることができるのも便利なポイントです。
PHPのタイムスタンプは、データベースに保存したり、ログの記録、スケジュール機能など、実際のWebアプリケーションでも非常に多く使われています。ただし、注意点としては「タイムゾーンの設定」を忘れずに行うことです。日本で利用する場合は、date_default_timezone_set("Asia/Tokyo")で明示的に指定しておきましょう。
応用として「今から1時間後」「今日から30日後」など、未来の時間を指定したい場合も、タイムスタンプに秒数を加算するだけで簡単に実現できます。逆に「過去から何日経ったか」を知りたいときは、2つのタイムスタンプの差を86400で割るだけで日数が求められるため、非常に便利です。
1時間後の処理を予約する例
<?php
$now = time();
$oneHourLater = $now + 3600;
echo "処理は1時間後のタイムスタンプでスケジュールされました:" . $oneHourLater;
?>
実際の業務では、リマインダー機能や予約投稿などでこのような時間処理を活用します。PHPのタイムスタンプを理解しておくことは、日付操作を自在に扱える力につながります。
生徒
「先生、Unixタイムスタンプってただの数字に見えましたけど、すごく便利なんですね!」
先生
「そのとおりです。数字だからこそ比較や計算がしやすく、PHPでも非常によく使われるんですよ。」
生徒
「今日からのイベントまでの日数や、ログインからの経過時間なんかも簡単にわかるんですね!」
先生
「そうですね。time()やstrtotime()、date()を使いこなせば、どんな時間処理も思い通りにできますよ。次は、もっと複雑な日付計算も挑戦してみましょうか。」
生徒
「はい!タイムゾーンの設定も忘れずに使っていきます!」