いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-305 (Go1.20からtime.{DateTime,DateOnly,TimeOnly}が追加された)

関連記事

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

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のおすすめ書籍

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。