関連記事
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
Go1.20から time パッケージに DateTime, DateOnly, TimeOnly 定数が追加されました。
日付のフォーマットが少し楽になりましたね。
試してみる
time.DateTime
package times import ( "time" "github.com/devlights/gomy/output" ) // FormatDateTime は、Go1.20で追加された time.DateTime フォーマット書式についてのサンプルです. // // # REFERENCES // - https://pkg.go.dev/time@go1.20.2#pkg-constants func FormatDateTime() error { // // Go1.20 から、time.DateTime (yyyy-MM-dd HH:mm:ss) というフォーマットが追加された // これにより、少しだけフォーマットする際に楽になった // var ( locJst *time.Location now time.Time jst time.Time err error ) locJst, err = time.LoadLocation("Asia/Tokyo") if err != nil { return err } now = time.Now() jst = now.In(locJst) output.Stdoutf("[UTC ]", "%v\n", now.UTC()) output.Stdoutf("[JST ]", "%v\n", jst) output.Stdoutf("[time.DateOnly]", "%s\n", time.DateTime) output.Stdoutf("[time.Format ]", "%s\n", jst.Format(time.DateTime)) return nil }
実行すると以下のようになります。
gitpod /workspace/try-golang (master) $ task task: [run] go run . -onetime ENTER EXAMPLE NAME: time_format_datetime [Name] "time_format_datetime" [UTC ] 2023-04-03 08:15:53.769488165 +0000 UTC [JST ] 2023-04-03 17:15:53.769488165 +0900 JST [time.DateOnly] 2006-01-02 15:04:05 [time.Format ] 2023-04-03 17:15:53 [Elapsed] 412.28µs
time.DateOnly
package times import ( "time" "github.com/devlights/gomy/output" ) // FormatDateOnly は、Go1.20で追加された time.DateOnly フォーマット書式についてのサンプルです. // // # REFERENCES // - https://pkg.go.dev/time@go1.20.2#pkg-constants func FormatDateOnly() error { // // Go1.20 から、time.DateOnly (yyyy-MM-dd) というフォーマットが追加された // これにより、少しだけフォーマットする際に楽になった // var ( locJst *time.Location now time.Time jst time.Time err error ) locJst, err = time.LoadLocation("Asia/Tokyo") if err != nil { return err } now = time.Now() jst = now.In(locJst) output.Stdoutf("[UTC ]", "%v\n", now.UTC()) output.Stdoutf("[JST ]", "%v\n", jst) output.Stdoutf("[time.DateOnly]", "%s\n", time.DateOnly) output.Stdoutf("[time.Format ]", "%s\n", jst.Format(time.DateOnly)) return nil }
実行すると以下のようになります。
gitpod /workspace/try-golang (master) $ task task: [run] go run . -onetime ENTER EXAMPLE NAME: time_format_dateonly [Name] "time_format_dateonly" [UTC ] 2023-04-03 08:16:39.763871276 +0000 UTC [JST ] 2023-04-03 17:16:39.763871276 +0900 JST [time.DateOnly] 2006-01-02 [time.Format ] 2023-04-03 [Elapsed] 102.66µs
time.TimeOnly
package times import ( "time" "github.com/devlights/gomy/output" ) // FormatDateTime は、Go1.20で追加された time.TimeOnly フォーマット書式についてのサンプルです. // // # REFERENCES // - https://pkg.go.dev/time@go1.20.2#pkg-constants func FormatTimeOnly() error { // // Go1.20 から、time.DateTime (yyyy-MM-dd HH:mm:ss) というフォーマットが追加された // これにより、少しだけフォーマットする際に楽になった // var ( locJst *time.Location now time.Time jst time.Time err error ) locJst, err = time.LoadLocation("Asia/Tokyo") if err != nil { return err } now = time.Now() jst = now.In(locJst) output.Stdoutf("[UTC ]", "%v\n", now.UTC()) output.Stdoutf("[JST ]", "%v\n", jst) output.Stdoutf("[time.TimeOnly]", "%s\n", time.TimeOnly) output.Stdoutf("[time.Format ]", "%s\n", jst.Format(time.TimeOnly)) return nil }
実行すると以下のようになります。
gitpod /workspace/try-golang (master) $ task task: [run] go run . -onetime ENTER EXAMPLE NAME: time_format_timeonly [Name] "time_format_timeonly" [UTC ] 2023-04-03 08:17:15.413025001 +0000 UTC [JST ] 2023-04-03 17:17:15.413025001 +0900 JST [time.TimeOnly] 15:04:05 [time.Format ] 17:17:15 [Elapsed] 139.98µs
参考情報
https://pkg.go.dev/time@go1.20.2#pkg-constants
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。