phpで紀元前を含めた日付の比較をタイムスタンプで行う。

phpで紀元前を含めた日付の比較をタイムスタンプで行う。



国内最速・高安定の高性能レンタルサーバー【ConoHa WING】

phpで日付をタイムスタンプに変換するには、「strtotime」を使うのですが、これは1970年1月1日 00:00:00 UTCを基準にしているため、それ以前の日付を指定しても値は返って来ません。

echo strtotime('1990/1/1');
// => 631152000
echo strtotime('1970/1/1');
// => 0
echo strtotime('1192/1/1');
// => (FALSE)

http://php.net/manual/ja/function.strtotime.php

で、こういう時は、「DateTime」を使えとのこと。DateTimeであれば、紀元前の年代も含めてタイムスタンプを取得することが出来ます。
http://php.net/manual/ja/class.datetime.php
http://php.net/manual/ja/datetime.createfromformat.php

但し、紀元前(マイナス符号)を用いる際の入力方法に決まりがあるので要注意。
日付は「-(ハイフン)」で区切り、「4桁-2桁-2桁」となるように「0」も追記すること。

$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 (こっちが正解)

2015-01-06_14h12_18
http://php.net/manual/ja/datetime.formats.date.php

今日はここまで

コメントを残す

メールアドレスが公開されることはありません。