time package
What is it?
`time` is Go’s standard library package for working with:
What is it used for?
Create timestamps for logs/events.
Measure elapsed time and performance.
Set timeouts and deadlines (often with `context`).
Schedule work with timers/tickers.
Parse/format time strings (RFC3339, custom layouts).
Core types
`time.Time`: a point in time (date + time + location)
`time.Duration`: a length of time (e.g., 200ms, 5s)
`time.Location`: time zone info (e.g., UTC, Asia/Ho_Chi_Minh)
Core functions (most common)
`time.Now()`: current local time
`time.Since(t)`: elapsed duration since `t`
`time.Until(t)`: duration until `t`
`time.Sleep(d)`: sleep for duration `d`
`time.Parse(layout, value)`: parse string into `time.Time`
`t.Format(layout)`: format `time.Time` into string
`time.NewTimer(d)`: one-shot timer
`time.NewTicker(d)`: periodic ticker
Example: current time
now := time.Now()
fmt.Println(now)
Example: measure elapsed time
start := time.Now()
// do work...
elapsed := time.Since(start)
fmt.Println("elapsed:", elapsed)
Example: sleep
time.Sleep(500 * time.Millisecond)
t, err := time.Parse(time.RFC3339, "2026-01-09T10:30:00+07:00")
if err != nil { return err }
s := t.Format(time.RFC3339)
fmt.Println(s)
Example: custom layout (Go layout rule)
Go uses a reference time to define layouts:
Child pages: