脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

DateTimeでマイクロ秒

DateTimeはマイクロ秒を扱うことができるが、
コンストラクタ経由だと秒精度までとなってしまう。

だからこう作る。

$timeZone = new \DateTimeZone(date_default_timezone_get());
$dt = \DateTime::createFromFormat('U.u', microtime(true));
$dt->setTimezone($timeZone);

request timeならこうする。

$timeZone = new \DateTimeZone(date_default_timezone_get());
$dt = \DateTime::createFromFormat('U.u', $_SERVER['REQUEST_TIME_FLOAT'];);
$dt->setTimezone($timeZone);

あまり古いバージョンだと、DateTimeの 'u' フォーマット、
$_SERVER['REQUEST_TIME_FLOAT'] が存在しない可能性がある。
おそらく5.4以降であれば大丈夫。