日常の開発プロセスでは、時間通りに動作するシナリオが頻繁に発生しますが、Golang の time パッケージを使用すると、時間に関連した操作を簡単に実装できます。次のいくつかの記事で time パッケージについて詳しく説明しますが、この記事ではまず、time パッケージ内の time.Time 構造体について説明します。
時間.時間
time.Time 型は、ナノ秒の精度で特定の時点を表すために使用されます。構造体の定義と対応するメソッドは次のとおりです。
type Time struct {
wall uint64
ext int64
loc *Location
}
さまざまな時点の属性を取得する方法
- func (t Time) Date() (year int, month Month, day int)、日付(年、月、日)情報を取得します。
- func (t Time) Year() int、年の情報を取得します。
- func (t Time) YearDay() int、年間通算日 (1 ~ 365) を取得します。
- func (t Time) Month() Month、月情報を取得し、Month 型を返します。
- func (t Time) ISOWeek() (年、週 int)、年と週 (1 ~ 53) を ISO 8601 形式で返します。
- func (t Time) Weekday() Weekday、Weekday 型を返します。
- func (t Time) Day() int、月の番号(1~31)を取得します。
- func (t Time) Clock() (時、分、秒 int)、時刻(時、分、秒)情報を取得します。
- func (t Time) Hour() int、時間情報(0~23)を取得します。
- func (t Time) Minute() int、分の情報(0~59)を取得します。
- func (t Time) Second() int、秒情報(0~59)を取得します。
- func (t Time) Nanosecond() int、ナノ秒情報(0~999999999)を取得します。
- func (t Time) Unix() int64、タイムスタンプを秒単位で取得します。
- func (t Time) UnixMilli() int64、タイムスタンプをミリ秒単位で取得します。
- func (t Time) UnixMicro() int64、タイムスタンプをマイクロ秒単位で取得します。
- func (t Time) UnixNano() int64、ナノ秒のタイムスタンプを取得します。
- func (t Time) String() 文字列。「2006-01-02 15:04:05.999999999 -0700 MST」タイプの時刻形式を返します。
- func (t Time) Location() *場所、タイムゾーン情報を取得します。
簡単な例を見てみましょう。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Println(t.Date())
fmt.Println(t.Year())
fmt.Println(t.YearDay())
fmt.Println(t.Month())
fmt.Println(t.ISOWeek())
fmt.Println(t.Weekday())
fmt.Println(t.Day())
fmt.Println(t.Clock())
fmt.Println(t.Hour())
fmt.Println(t.Minute())
fmt.Println(t.Second())
fmt.Println(t.Nanosecond())
fmt.Println(t.Unix())
fmt.Println(t.UnixMilli())
fmt.Println(t.UnixMicro())
fmt.Println(t.UnixNano())
fmt.Println(t.String())
fmt.Println(t.Location())
}
時間処理方法(比較・判定・分析)
- func (t Time) Format(layout string) string、時間を指定された形式にフォーマットします。
- func (t Time) Add(d Duration) 時間に指定された時間を加えます。
- func (t Time) AddDate(years int, months int, days int) Time。指定された年、月、日が t に加算される時点を返します。
- func (t Time) Sub(u Time) 継続時間。2 つの時点間の時間差を返します。
- func (t Time) Truncate(d Duration) Time、指定された時間を切り捨てます。
- func (t Time) Round(d Duration) Time。時間を指定された時間に丸めます。
- func (t Time) Equal(u Time) bool、2 つの時点が等しいかどうかを判断します。
- func (t Time) After(u Time) bool、時点 t が時点 u より後であるかどうかを判断します。
- func (t Time) Before(u Time) bool、時点 t が時点 u より前であるかどうかを判断します。
他の方法については個別に説明しません。詳細については公式ドキュメントを参照してください。