Laravel

日時がUTCで英語表示なのをJSTにしてMySQLのTIMESTAMP形式で保存

ある作業を通して出力されるログの日時が、”Fri Apr 03 07:25:46 UTC 2020″という文字列だったので、それを”2020-04-03 16:25:46″と直して、MySQLのTIMESTAMP形式のデータに格納する方法です。

ログはCSV形式で出力されるので、下記の記事の方法でLaravelにimportしました。

LaravelでExcelファイルを読み込む方法のメモ|ゼロから始めるLaravel勉強会

まずは、下記の通り必要なものをuseしておく

use DateTime;
use DateTimeZone;
use Carbon\Carbon;

データ変換についてはこちら


//元のデータ
$original_time = "Fri Apr 03 07:25:46 UTC 2020"

$utc = strtotime($original_date);

$time = new DateTime();

$time->setTimestamp($utc)->setTimezone(new DateTimeZone('Asia/Tokyo'));

$time = Carbon::parse($time)->format('Y-m-d H:i:s');

これで、日本時間(JST)の形式でMySQLに保存することができました。

参考
【PHP】UTCタイムスタンプを強制的にJST(日本時刻)表示する方法 – Qiita
Laravelで日付関連の処理を行うCarbonを使ってみる | cly7796.net
php – date() expects parameter 2 to be integer, string given – Help Me – Stack Overflow
[PHP] 日時/日付/時間の差を計算する – Qiita