LINE Messaging APIのWebhockで送られてくるデータ
{
"events": [
{
"replyToken": "(replyToken)",
"type": "message",
"timestamp": 1502147710132,
"source": {
"type": "user",
"userId": "(userId)"
},
"message": {
"id": "(messageId)",
"type": "text",
"text": "Hello, world"
}
}
]
}
このtimestamp
をPHPで文字列に変換しようとした。
コード
echo date('Y-m-d H:i:s', $event['timestamp']); // =>"49571-03-03 05:48:52"
なぜか49571年03月03日 05:48:52とかになる。
原因
APIから送られてくるtimestamp
はミリ秒単位だった。
解決策
ミリ秒単位で送られてくるならこっちで秒単位に直せばいいよね
- ミリ秒単位のタイムスタンプを1000で割れば秒単位になる。
- タイムスタンプのデータ型はint型
- 別に秒単位の精度で問題ない
解決したコード
echo date('Y-m-d H:i:s', ($event['timestamp'] / 1000)); // =>"2017-08-08 08:15:10"
わかったこと
- ちゃんとAPIリファレンスは読みましょう。
- データは必要な精度まででいい。
- PHPにはミリ秒単位で扱える関数がない?(あったら教えてください。)