2020-07-31
PHP の uniqid をデコードする
なんか一意っぽい値を PHP で生成する場合の楽な手段として、 uniqid
がある。
prefix を除いた先頭 8 桁が unixtime を 16 進数で出してるだけっぽいので、こいつが何時生成されたのかを知りたい時に、以下の手順が踏める。
ここのコメントのまま使える。more_entropy
が有効な値で試す。
// <?php
$s = "5ef4f46e0e40f9.59913527";
$d = date("r",hexdec(substr($s,0,8)));
echo($d . PHP_EOL);
// Thu, 25 Jun 2020 19:01:02 +0000
しかし手前は PHP をインストールしてなくて repl を持ってない(↑ の Repl.it でやった)ので、これを PowerShell でやる!(ついでに JST)
$s = "5ef4f46e0e40f9.59913527";
(Get-Date '1970-1-1').AddSeconds([System.Convert]::ToInt32($s.Substring(0, 8), 16)).ToLocalTime()
# 2020年6月26日 04:01:02
ちょっとした小技が必要だったので覚書しておく。 無駄に PHP のコードを読んでしまった...😂