3 04

[php]PHPは5.1.0以降なら1902年~2037年の誕生日がOK

Tag: phpuechoco @ 00 : 00 : 00

PHP5.1.0からはunix timeの計算を自前で実装しています。unix timeを負の方向に自然に拡張することで、pre-epoch
unix timeが扱えるようになりました。32bit環境であれば-2^31から2^31-1まで、1901-12-13 20:45:52
GMT~2038-01-19 03:14:07 GMTまでのunix timeを扱えるようになっています。

 前に読んだけど、自分の中で忘れていたので、メモ。

 php5.1.0以降なら、他のライブラリを使わなくてもWebサービスの対象年齢層の誕生日を扱えるんだねっていうことなんだけれども、やっぱり今時はvalid 2038なプログラムを書くほうがより良いから、たいして有用なトピックでもなかったかな。

 


<?php

// php 5.2.5

tryStrToTime(‘1969-12-31 23:59:59′);

tryStrToTime(‘1969-12-31 23:59:59 GMT’);

tryStrToTime(‘1901-12-13 20:45:52′);

tryStrToTime(‘1901-12-13 20:45:52 GMT’);

tryStrToTime(‘1901-12-14 05:45:52′);

tryStrToTime(‘2038-01-19 03:14:07′);

tryStrToTime(‘2038-01-19 03:14:07 GMT’);function tryStrToTime($strtime) {

    if (($unixtime = strtotime($strtime)) == false) {

        echo “[{$strtime}] is unknown.
;

    } else {

        echo “[{$strtime}] > {$unixtime}.
;

    }

}

?>
[1969-12-31 23:59:59] > -32401. [1969-12-31 23:59:59 GMT] > -1. [1901-12-13 20:45:52] is unknown. [1901-12-13 20:45:52 GMT] > -2147483648. [1901-12-14 05:45:52] > -2147483648. [2038-01-19 03:14:07] > 2147451247. [2038-01-19 03:14:07 GMT] > 2147483647.