検索

キーワード


目次

【PHP】日付関数(time, date, strtotime)

  • 公開日:2020-09-25 18:24:04
  • 最終更新日:2021-02-03 11:50:21

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

日付関数

PHPで時間や日付を取得する、日付関数と日付の比較について解説していきます。

time

time関数は、現在のUNIXのタイムスタンプを返します。

time()

この関数を実行すると、現在時刻をUNIXエポック(1970年1月1日 00:00:00 GMT)からの通算秒として返します。

このままだと数字が羅列された結果が返ってきてしまうので、後述するdate関数などと組み合わせて使います。


date

日付を取得するためには、date関数を使用します。

date(フォーマット, タイムスタンプ)

ここで先述したtime関数で取得できるUNIXタイムスタンプを第2引数に指定することで、現在日時を取得することができます。

<?php

$timestamp = time();
echo date("Y/m/d", $timestamp);

?>
2020/09/25

また、第2引数は省略することもできるので、タイムスタンプは必ず取得する必要はありません。


strtotime

指定した日時を取得するには、strtotime関数を使用します。

例として、今日から4日後の日付を出力してみます。

<?php

$today = strtotime(date("Y/m/d 00:00:00"));
echo strtotime("+4 day", $today);

?>
2020/09/29 00:00:00

他にも週や曜日単位での指定も可能です。

<?php

$today = strtotime(date("Y/m/d 00:00:00"));

echo strtotime("now", $today); // 今日
echo strtotime("10 September 2000", $today); // 2000年9月10日
echo strtotime("+1 day", $today); // 1日後
echo strtotime("+1 week", $today); // 1週間後
echo strtotime("+1 week 2 days 4 hours 2 seconds", $today); // 1週間と2日、4時間2分後
echo strtotime("next Thursday", $today); // 次の木曜日
echo strtotime("last Monday", $today); // 先週の月曜日

?>


date_default_timezone_set

date_default_timezone_set関数は、スクリプト中の日付/時刻関数で使用されるタイムゾーンを設定することができます。

date_default_timezone_set(タイムゾーンID)

この関数を使うことで、世界中のタイムゾーンを指定して時間を出力することができます。

それでは、日本とアメリカの現在日時を出力してみます。

<?php
 
//タイムゾーンを日本の時間に設定
date_default_timezone_set("Asia/Tokyo");
echo date("Y年m月d日H時i分s秒")."<br>";
 
//タイムゾーンをアメリカの時間に設定
date_default_timezone_set("America/Los_Angeles");
echo date("Y年m月d日H時i分s秒");

?>
2020年09月25日16時10分23秒
2020年09月25日00時10分23秒

日本とアメリカでは時差が16時間あるので、それぞれの現地時間が出力できていることがわかります。


日付の比較

数値の比較同様、日付も比較して処理の分岐をすることができます。

<?php

$today = date("Y/m/d"); // 現在日時は2020年9月25日
$target_day = "2020/04/10";

if(strtotime($today) === strtotime($target_day)) {
  echo "ターゲット日付は今日です";
} else if(strtotime($today) > strtotime($target_day)) {
  echo "ターゲット日付は過去です";
} else {
  echo "ターゲット日付は未来です";
}

?>
ターゲット日付は過去です


まとめ

日付関数と日付の比較についてまとめてみました。

日付処理は動的サイトの開発において必要になってくるので、基本的な関数や処理は抑えておくとよいでしょう。


【著者】

當山

主にPHPでのフレームワーク開発やWebアプリの開発に携わってきました。 得意分野はHTML5とCSSによるフロントエンド開発。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事