こんにちはー。ららべるだう!
大丈夫かコレ。。
まぁいいや。
今回はUnix Timestampでハマったので、Unix Timestampでハマっているあなたと、ハマってしまった私に対して書いていこうかと思います。笑
問題
外部APIからUnix TimestampがINTで取得できる。
PHPのdate()で変換。
MySQLのDATETIME型のカラムにINSERT
ReferenceError => Loop
なにがおこってるの。。
PHP date 仕様
date
(PHP 4, PHP 5, PHP 7)
date — ローカルの日付/時刻を書式化する
これを見る限り
1 2 |
date("Y-m-d H:i:s"); // ex. 2017-12-07 00:00:00 date("Y-m-d H:i:s", $unix_timestamp); // ex. unix_timestampの時間帯が上記のような文字列で得られる。 |
使い方は簡単だけど何故かうまくいかない。。
原因・解決
Unix Timestampには2種類ある。
2017年12月1日だとこうなる。
10桁 1512086400
13桁 1512086400000
。。
実はこれms秒を加味していない(10桁)と加味している(13桁)と同じUnixTimestampって名前になってるみたいです。
そして私が扱ってたのが13桁の方で
1 |
date("Y-m-d H:i:s", 1512086400000); // 49886-02-10 12:00am (UTC) |
いつだよこれ!!!と怒られてたみたいです。。笑
余談
MySQL DATETIME型 ‘9999-12-31 23:59:59.999999’まで
MySQL TIMESTAMP型 ‘2038-01-19 03:14:07.999999’まで
ここまで読んでいただけたらわかると思いますが、解決法は1000で割ってあげると大丈夫という簡単なものでした。
1 |
date("Y-m-d H:i:s", 1512086400000 / 1000); // 2017-12-01 00:00:00 |
こんかいはここまで!!!
コメントを残す