この記事のポイント
PHP開発において日付処理は頻繁に必要となる重要な機能です。本記事では、strtotime関数の基本から実践的な活用方法まで、初心者にも理解しやすく解説していきます。
- 文字列形式の日付をタイムスタンプに簡単変換
- 相対的な日付指定による柔軟な日付計算の実現
- 多様な日付フォーマットに対応した汎用的な処理
これらのポイントを押さえることで、PHPでの日付処理がより効率的になり、動的なウェブアプリケーション開発に役立てることができるでしょう。
strtotime関数とは?
strtotime関数は、人間が読みやすい日付文字列をUnixタイムスタンプに変換する組み込み関数です。例えば「2024年1月1日」や「来月」といった表現を数値に変換できます。
この関数の最大の特徴は、自然言語に近い日付表現を理解できることです。通常のプログラミングでは複雑な日付計算が必要な場面でも、strtotime関数を使えば直感的な記述が可能になります。戻り値はUnixタイムスタンプ(1970年1月1日からの秒数)となり、失敗時はfalseを返します。
【関連】
PHPをもっと詳しく学ぶならpaizaラーニング
基本構文
strtotime関数の基本的な書き方とコード例を見ていきましょう。第一引数に日付文字列、第二引数(オプション)に基準となるタイムスタンプを指定します。
<?php
// 現在時刻を基準とした基本的な使用例
$timestamp1 = strtotime('2024-01-01');
$timestamp2 = strtotime('next Monday');
echo date('Y-m-d', $timestamp1). "\n";
echo date('Y-m-d', $timestamp2);
?>
出力結果(例)
2024-01-01
2025-08-25
※このページ内のコードの出力結果の一部で、実行した時刻により変動するものがあります。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります
<?php
// 基準日時を指定した相対的な日付計算
$baseDate = strtotime('2024-01-01');
$nextMonthDate = strtotime('+1 month', $baseDate);
echo date('Y-m-d', $nextMonthDate);
?>
出力結果
2024-02-01
実用例
ここからは、実際の開発現場で役立つstrtotime関数の具体的な使用例を紹介します。
各サンプルコードでは、よくある日付処理のパターンを取り上げ、初心者でも理解しやすいように段階的に解説していきます。これらの例を参考にすることで、あなたのプロジェクトでも効率的な日付処理が実装できるようになるでしょう。
現在日時からの相対的な日付取得
今日を基準として、過去や未来の日付を簡単に計算できます。ユーザーの行動履歴や予定管理システムでよく使われる処理の例です。
<?php
$today = date('Y-m-d');
$yesterday = date('Y-m-d', strtotime('-1 day'));
$nextWeek = date('Y-m-d', strtotime('+1 week'));
echo "今日: " . $today . "\n";
echo "昨日: " . $yesterday. "\n";
echo "来週: " . $nextWeek;
?>
出力結果(例)
今日: 2025-08-20
昨日: 2025-08-19
来週: 2025-08-27
特定の曜日を取得する処理
毎週決まった曜日にイベントを実行したい場合に便利な機能です。定期的なメンテナンスやレポート生成で活用する例です。
<?php
$nextFridayTimestamp = strtotime('next Friday');
$lastMondayTimestamp = strtotime('last Monday');
echo "次の金曜日: " . date('Y-m-d', $nextFridayTimestamp) . "\n";
echo "前の月曜日: " . date('Y-m-d', $lastMondayTimestamp). "\n";
?>
出力結果
次の金曜日: 2025-08-22
前の月曜日: 2025-08-18
月末日の計算
カレンダーアプリケーションや請求システムにおける月末処理の例です。月によって日数が異なる問題も自動的に解決されます。
<?php
$thisMonthEndTimestamp = strtotime('last day of this month');
$nextMonthEndTimestamp = strtotime('last day of next month');
echo "今月末: " . date('Y-m-d', $thisMonthEndTimestamp) . "\n";
echo "来月末: " . date('Y-m-d', $nextMonthEndTimestamp) . "\n";
?>
出力結果(例)
今月末: 2025-08-31
来月末: 2025-09-30
年齢計算
生年月日から現在の年齢を計算する処理の例です。ユーザー管理システムや統計処理でよく使われます。
<?php
$birthDateTimestamp = strtotime('2024-05-15');
$currentTimestamp = time();
$ageSecondsTimestamp = $currentTimestamp - $birthDateTimestamp;
$ageYears = floor($ageSecondsTimestamp / (365.25 * 24 * 3600));
echo "年齢: " . $ageYears . "歳\n";
?>
出力結果(例)
年齢: 1歳
営業日計算
土日を除いた営業日の計算処理の例です。ビジネスアプリケーションで配送日や処理完了予定日を算出する際に使用します。
<?php
$timestampAfter3Weekdays = strtotime('+3 weekdays');
$dateAfter3Weekdays = date('Y-m-d', $timestampAfter3Weekdays);
$dayName = date('l', $timestampAfter3Weekdays);
echo "3営業日後: " . $dateAfter3Weekdays . "\n";
echo "曜日: " . $dayName . "\n";
?>
出力結果(例)
3営業日後: 2025-08-25
曜日: Monday
時間指定での日時生成
具体的な時刻を指定した日時生成の処理の例です。予約システムやスケジュール管理で時刻付きの日時データが必要な場合に活用します。
<?php
$tomorrowMorningTimestamp = strtotime('tomorrow 9:00 AM');
$todayEveningTimestamp = strtotime('today 6:30 PM');
echo "明日朝: " . date('Y-m-d H:i', $tomorrowMorningTimestamp) . "\n";
echo "今日夕方: " . date('Y-m-d H:i', $todayEveningTimestamp) . "\n";
?>
出力結果(例)
明日朝: 2025-08-21 09:00
今日夕方: 2025-08-20 18:30
四半期計算処理
ビジネスレポートや財務処理で必要な四半期の開始日と終了日を計算する例です。会計システムや売上分析で使われる機能です。
<?php
$firstQuarterStartTimestamp = strtotime('first day of April');
$firstQuarterEndTimestamp = strtotime('last day of June');
echo "第1四半期開始: " . date('Y-m-d', $firstQuarterStartTimestamp) . "\n";
echo "第1四半期終了: " . date('Y-m-d', $firstQuarterEndTimestamp) . "\n";
?>
出力結果(例)
第1四半期開始: 2025-04-01
第1四半期終了: 2025-06-30
期限切れ判定
会員期限やライセンス有効期限の判定処理の例です。サブスクリプションサービスやアカウント管理システムで使用される機能です。
<?php
$expirationTimestamp = strtotime('2024-12-31');
$currentTimestamp = time();
$is_expired = $currentTimestamp > $expirationTimestamp;
echo "期限日: " . date('Y-m-d', $expirationTimestamp) . "\n";
echo "期限切れ: " . ($is_expired ? "はい" : "いいえ") . "\n";
?>
出力結果
期限日: 2024-12-31
期限切れ: はい
まとめ
strtotime関数は、文字列形式の日付をタイムスタンプに変換します。自然言語に近い表現で日付を操作できるため、複雑な日付計算も直感的に記述できます。本記事で紹介した基本構文と実用例を参考に、あなたのプロジェクトでも活用してください。
strtotime関数の活躍する場面
- ウェブアプリケーションでの予約システム構築時の日程管理
- ECサイトでの配送予定日や割引期限の自動計算処理
- ユーザー管理システムでの年齢計算や有効期限判定
重要なポイント
- 相対的な日付指定により柔軟な日付計算が可能になる
- 失敗時はfalseを返すためエラーハンドリングが必要
- タイムゾーンの設定により結果が変わることに注意する
strtotime関数をマスターすることで、PHPでの日付処理がより効率的になり、ユーザーフレンドリーなウェブアプリケーション開発につながるでしょう。
レベルを更に上げたい方はpaizaプログラミングスキルチェックへ