【PHP】現在、または指定した時刻から指定した時間分だけ増減させて表示する方法
今回は現在、または指定した時刻から指定した時間だけ進めたり、戻したりした時間を表示する方法をメモしていきたいと思います。
この操作も意外と忘れちゃうんですよね(;^ω^)
だけどその前に、現在の時刻、または指定した時刻を表示する方法が分からないという方はこちらの記事から参考にしてみてくださいね。
目次
時間を○○進めた、または戻した時刻を表示する方法
|
1 2 3 4 |
<?php strtotime("指定した時刻の文字列"."進めたい、または戻したいだけの時間") date("フォーマット","指定した日付のタイムスタンプ") ?> |
まずは「strtotime」に指定した時刻を文字列で記述します。次に進めたい、または戻したいだけの時間を連結子を用いて、指定した時刻の後に文字列で記述します。この記述時、「年」単位で増減させたいのか、「時間」単位で増減させたいのか、はたまた「分」単位で増減させたいのかなどで記述方法が変わってくるので、これは後述記載する各サンプルコードで確認して頂けたらと思います。
また現在時刻から増減させたい場合は、増減させたいだけの記述を入れておけば大丈夫です。
あとは「date」関数で表示させれば完了です。
それでは各サンプルコードを見ていきましょう。今回は現在時刻($date1)と指定した時刻「2020/11/29 10:30:30」($date2と$date3)から各々の時間増減させたサンプルコードを用意しています。
「年」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // strtotime("指定した時刻の文字列"."進めたい、または戻したいだけの時間") // date("フォーマット","指定した日付のタイムスタンプ") date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+5 year"); $date2 = strtotime($sample."+5 year"); $date3 = strtotime($sample."-5 year"); echo date("Y/m/d H:i:s",$date1); //2025/11/30 07:30:00 echo date("Y/m/d H:i:s",$date2); //2025/11/29 10:30:30 echo date("Y/m/d H:i:s",$date3); //2015/11/29 10:30:30 ?> |
「strtotime」書き方が特徴で、“+- 〇 year” と指定した時刻と連結子で、文字列で入力することで指定した分だけ時刻を増減しています。「year」から察する通り、ここの部分を「minute」などに設定することで、単位を変更することができます。
「月」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+5 month"); $date2 = strtotime($sample."+5 month"); $date3 = strtotime($sample."-5 month"); echo date("Y/m/d H:i:s",$date1); //2021/04/30 07:51:52 echo date("Y/m/d H:i:s",$date2); //2021/04/29 10:30:30 echo date("Y/m/d H:i:s",$date3); //2020/06/29 10:30:30 ?> |
12月を越えると「年」単位で繰り上がることを確認出来ますね。
「日」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+5 day"); $date2 = strtotime($sample."+5 day"); $date3 = strtotime($sample."-5 day"); echo date("Y/m/d H:i:s",$date1); //2020/12/05 07:56:33 echo date("Y/m/d H:i:s",$date2); //2020/12/04 10:30:30 echo date("Y/m/d H:i:s",$date3); //2020/11/24 10:30:30 ?> |
「時間」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+5 hour"); $date2 = strtotime($sample."+5 hour"); $date3 = strtotime($sample."+24 hour"); echo date("Y/m/d H:i:s",$date1); //2020/11/30 13:00:33 echo date("Y/m/d H:i:s",$date2); //2020/11/29 15:30:30 echo date("Y/m/d H:i:s",$date3); //2020/11/30 10:30:30 ?> |
「分」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+10 minute"); $date2 = strtotime($sample."+10 minute"); $date3 = strtotime($sample."+60 minute"); echo date("Y/m/d H:i:s",$date1); //2020/11/30 08:12:54 echo date("Y/m/d H:i:s",$date2); //2020/11/29 10:40:30 echo date("Y/m/d H:i:s",$date3); //2020/11/29 11:30:30 ?> |
「秒」単位で増減させた時刻を表示する
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php date_default_timezone_set('Asia/Tokyo'); $sample = "2020/11/29 10:30:30"; $date1 = strtotime("+30 second"); $date2 = strtotime($sample."+30 second"); $date3 = strtotime($sample."+60 second"); echo date("Y/m/d H:i:s",$date1); //2020/11/30 08:06:30 echo date("Y/m/d H:i:s",$date2); //2020/11/29 10:31:00 echo date("Y/m/d H:i:s",$date3); //2020/11/29 10:31:30 ?> |
終わりに
いかがだったでしょうか?時刻の操作は慣れないとどう記述していいか…初心者の頃はあるあるだと思います。
記述方法をしっかり覚えてしっかり表示できるようにしたいですね。
それでは今回はここまでです。お疲れ様でした(・ω・)ノシ