herokuにデプロイ時に日本時間にする方法【PHP】

phpで作ったアプリをherokuにデプロイし、その際ClearDB MySQLという無料で使えるありがたいデータベースを使わせてもらっています。

データを登録した時に、登録日時をTIMESTAMPを使ってデータベースに登録しているのですが、その日時が協定世界時(UTC)で登録されてしまいます。それを日本標準時(JST)にする方法を調べてみました。

    try {
        $dbh = new PDO($dsn, $user, $password,[
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET time_zone='+09:00'",
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_EMULATE_PREPARES => FALSE,
        ]);
    } catch (PDOException $e) {
        echo 'DB接続エラー:' . $e->getMessage();
        exit();
    }

結果から言ってしまえば、データベースに接続する際に
PDO::MYSQL_ATTR_INIT_COMMAND => "SET time_zone='+09:00'"
というオプションを追加するだけです。

ですが、これはデータベースに登録する際に9時間たしたJSTが登録されるというわけではなく、PDOインスタンスを生成する際にデータベースに登録されている日時に9時間たされるというもののようです。
なのでデータベースに登録されている日時はUTCのままでしたが、ブラウザで表示させるとしっかりJSTになっていました。

ちなみにデータベース自体にJSTを登録する方法はなさげでした。
今回はブラウザ上でJSTが表示されればなんの問題もありませんのでこの方法で解決です。


この記事が気に入ったらサポートをしてみませんか?