読者です 読者をやめる 読者になる 読者になる

halka-tech

技術的なことを書きます

ある日からn年後を求める

php

PHP: strtotime - Manual
http://php.net/manual/ja/function.strtotime.php
なんとなく気になったのでやってみました.

<?php
//ある日のタイムスタンプを調べる
//strtotimeで
$oneday=strotime("2009/11/11")
//mktimeで
$oneday=mktime(0,0,0,11,11,2009);
//ある日のn年後を求める
$n_years_later=strtotime("+n year",$oneday);
?>

$n_years_laterにn年後のタイムスタンプが格納されています.
n*3600*24*365だとかやろうと思ったんですが,閏年とかが面倒なのでこの方法をとりました.
strtotime()の引数がポイントです.

int strtotime ( string $time [, int $now ] )

phpのマニュアルを参照すると,第一引数にはある日を決めたとき同様に日付を表記する方法と,"Next Monday"だとか"now"を渡すことができます.
どのようなものが予約されているかは,マニュアルから引用すると以下の様になっています.

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

結構融通が利くみたいです."+n year"だとか,"+n month",逆に"-n year"なんかにも対応していました.
重要なのが第二引数です.
第二引数を渡さなかった場合,現在の時刻から計算されますが,マニュアルには「返される値を計算するために使用されるタイムスタンプ。」とありますから,生成したある日のタイムスタンプを渡すとある日からn年後だとか,n日後のタイムスタンプが返されます.
これで,現在のタイムスタンプと比較してカウントダウンだとかができると思います.
例えば,結婚記念日のn年後に何とか式とか,記念旅行だなんだで,いろいろな産業が儲かるようにいろいろと記念日があるみたいですからそれまであとどれくらいあるのかななどの計算ができると思います.
中高生リア充カップルはつきあってnヶ月記念日まであと何日かなとか大変青臭いことの計算もできますから大変すばらしいですねえ.
チャリを二人乗りして二人とも転倒して(ry

大変ほほえましい風景ですね.