jsのDate+firestore.Timestampの組み合わせの場合、タイムゾーンはそんなに気にしなくていい


TL;DR

  • jsのDateもfirestore.Timestampもエポックミリ秒を持っているだけ
  • よってDate <==> Timestampの相互変換は可逆的
  • jsのDateはブラウザが勝手にタイムゾーンを決める
  • ただ、ゾーン切替のテストをしたい場合や、別ゾーン表示は面倒

jsのDateもfirestore.Timestampもエポックミリ秒を持っているだけ

consoleの出力やfirestoreの標準DBツールを見ると、TimeZoneまで表示される場合がありますが、
これはブラウザやDBツールが勝手にタイムゾーンを判断して出しているだけで、
どちらも内部的にはエポックミリ秒として管理されています。

DateのgetHoursやgetDateで出る値も、Dateが裏でよろしくやってくれています。

よって、別タイムゾーンでDateをfirestore.Timestamp形式でfirestoreに格納し、
別タイムゾーンのクライアントから呼び出してtoDateして表示すると、
いい具合にクライアントのタイムゾーンに切り替えて表示してくれます。

が、あえて変えたい場合は面倒

但し、このよろしくやってくれるタイムゾーン判定、
逆に手動で切り替えるAPIが標準で用意されていません。
別タイムゾーンでの挙動テストや、別タイムゾーンの時間で表示したい場合は
手計算をしたりとか、ライブラリの導入等が必要になります。