LoginSignup
0
0

More than 3 years have passed since last update.

【Go】本日日付のJST00:00:00をUTC時刻で取得する

Posted at

概要

日付のデータに関してデータベース上では、UTCで格納しているケースはけっこうあると思います。ただシステムは日本時間(JST)の世界で動いているので、例えばクエリで日付を絞り込むときにJSTの00:00:00から開始したいんだけど、DB上はUTCなのでその昨日日付の15:00:00からのデータが対象となります。
ということで、こういうケースの場合、どうやってGoで日付の実装をしていけば良いのかというのを紹介します。

対応例

  • 取得するデータを日本時間の本日日付という前提で、まずはJSTの本日日付の00:00:00を取得します。Goでtime.Parseを使うときのタイムゾーンについてを参考に、まずは日本時間でtime.Now()を取得し時刻部分の切り捨てを行います。例えば日本時間の2021/5/14に実行した場合は2021-05-14 00:00:00 +0900 Asia/Tokyoと出力されます。
jst := time.FixedZone("Asia/Tokyo", 9*60*60)
currentTimeJst, _ := time.ParseInLocation("20060102", time.Now().In(jst).Format("20060102"), jst)
fmt.Println(currentTimeJst)
  • では次に、上記で取得した日付をUTC時刻に変換します。日本時間の2021/5/14に実行した場合は2021-05-13 15:00:00 +0000 UTCとなる想定です。実装としては、取得したJST日付でtime.UTC()メソッドを呼べば良いです。
currentTimeUtc := currentTimeJst.UTC()
fmt.Println(currentTimeUtc)
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0