phpで紀元前を含めた日付の比較をタイムスタンプで行う。
作成日:
2015年1月6日
phpで日付をタイムスタンプに変換するには、「strtotime」を使うのですが、これは1970年1月1日 00:00:00 UTCを基準にしているため、それ以前の日付を指定しても値は返って来ません。[php]echo strtotime('1990/1/1');
// => 631152000
echo strtotime('1970/1/1');
// => 0
echo strtotime('1192/1/1');
// => (FALSE)[/php]
PHP: strtotime - Manual
http://php.net/manual/ja/function.strtotime.php
で、こういう時は、「DateTime」を使えとのこと。DateTimeであれば、紀元前の年代も含めてタイムスタンプを取得することが出来ます。
PHP: DateTime - Manual
http://php.net/manual/ja/class.datetime.php
PHP: DateTime::createFromFormat - Manual
http://php.net/manual/ja/datetime.createfromformat.php
但し、紀元前(マイナス符号)を用いる際の入力方法に決まりがあるので要注意。
日付は「-(ハイフン)」で区切り、「4桁-2桁-2桁」となるように「0」も追記すること。[php]$time1 = new DateTime('1192/1/1');
echo $time1->format('U');
// => -24551337600
$time2 = new DateTime('-1192/1/1');
echo $time1->format('U');
// => 980990340 (意図しない値)
$time3 = new DateTime('-1192-01-01');
echo $time1->format('U');
// => -99783100800 (こっちが正解)[/php]
PHP: 日付の書式 - Manual
http://php.net/manual/ja/datetime.formats.date.php
物草 灸太郎
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
関連投稿
Loading...
コメントをどうぞ