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

作成日:

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]

favicon
PHP: strtotime - Manual http://php.net/manual/ja/function.strtotime.php

で、こういう時は、「DateTime」を使えとのこと。DateTimeであれば、紀元前の年代も含めてタイムスタンプを取得することが出来ます。

favicon
PHP: DateTime - Manual http://php.net/manual/ja/class.datetime.php

favicon
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]2015-01-06_14h12_18

favicon
PHP: 日付の書式 - Manual http://php.net/manual/ja/datetime.formats.date.php

物草 灸太郎
物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

Loading...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。