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が表示されればなんの問題もありませんのでこの方法で解決です。