Unix timestampの罠。

シェアする

こんにちはー。ららべるだう!

大丈夫かコレ。。

まぁいいや。

今回は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 — ローカルの日付/時刻を書式化する

説明 ¶

string date ( string $format [, int $timestamp = time() ] )

指定された引数 timestamp を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。 つまり timestamp はオプションであり そのデフォルト値は time() の値です。

http://php.net/manual/ja/function.date.php

これを見る限り

使い方は簡単だけど何故かうまくいかない。。

原因・解決

Unix Timestampには2種類ある。

2017年12月1日だとこうなる。

10桁 1512086400

13桁 1512086400000

。。

実はこれms秒を加味していない(10桁)と加味している(13桁)と同じUnixTimestampって名前になってるみたいです。

そして私が扱ってたのが13桁の方で

いつだよこれ!!!と怒られてたみたいです。。笑

余談

MySQL DATETIME型 ‘9999-12-31 23:59:59.999999’まで

MySQL TIMESTAMP型 ‘2038-01-19 03:14:07.999999’まで

ここまで読んでいただけたらわかると思いますが、解決法は1000で割ってあげると大丈夫という簡単なものでした。

こんかいはここまで!!!

参考リンク

MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3 日付と時間型

date — ローカルの日付/時刻を書式化する

microtime — 現在の Unix タイムスタンプをマイクロ秒まで返す

If this blog is good
If this article is good
Bitcoin
12mEmvjEr4fwdJtiKWs5McV2Pm9LZB3iGX
スポンサーリンク
Sponsor Link



Sponsor Link



シェアする

スポンサーリンク
Sponsor Link