抽空把 time 标准包的部分常用基本功能捋了一遍。
时间
获取时间
import ( "fmt" "time")
func main() { // 获取本地计算机时间 localTime := time.Now() // 2020-08-01 22:08:12.983185 +0800 CST m=+0.000104694 fmt.Println(localTime)}
时间格式化
import ( "fmt" "time")
func main() { localTime := time.Now() // 2006-01-02 15:04:05 中的时间不可更改 formatTime := localTime.Format("2006-01-02 15:04:05") fmt.Println(formatTime) // 返回:2020-08-01 22:16:03}
上面是用-
做为分隔符,也可以自定义:
func main() { localTime := time.Now() // 日、月、小时和分秒,如果可去掉 前导的 0 formatTime := localTime.Format("2006年1月2日 15点04分05秒") fmt.Println(formatTime) // 返回:2020年8月1日 22点58分07秒}
只获取指定部分:
import ( "fmt" "time")
func main() { localTime := time.Now()
// 分别返回年月日 fmt.Println(localTime.Year()) fmt.Println(localTime.Month()) fmt.Println(localTime.Day()) // 返回时分秒 fmt.Println(localTime.Hour()) fmt.Println(localTime.Minute()) fmt.Println(localTime.Second()) // 返回周 fmt.Println(localTime.Weekday())}
时区
查看时区
import ( "fmt" "time")
func main() { localTime := time.Now() // 返回 CST 28800(时区及 UTC 偏移量) fmt.Println(localTime.Zone()) // 需要 tzdata 支持 time.LoadLocation("Local")}
指定时区
import ( "fmt" "time")
func main() { localTime := time.Now() // 8*60*60 也可用 int((8 * time.Hour).Seconds()) 表示 cusZone := time.FixedZone("UTC+8", 8*60*60) cusTime := localTime.In(cusZone) fmt.Println(cusTime)}
时间戳
查看时间戳
import ( "fmt" "time")
func main() { currTime := time.Now() // 秒 unixTime := currTime.Unix() // 纳秒 unixNanoTime := currTime.UnixNano()}
上面的示例其实是把当前的时间转为时间戳,也可以把指定的时间转为时间戳:
func main() { cusZone := time.FixedZone("UTC+8", 8*60*60) // 2020-12-11 10:09:08.000000007 +0800 UTC+8 timeDate := time.Date(2020, 12, 11, 10, 9, 8, 7, cusZone) unixTime := timeDate.Unix() // 返回 1607652548}
时间戳转时间字符串
import ( "fmt" "time")
func main() { currUnixTime := Time.Now().Unix() currTime := Time.Unix(currUnixTime, 0) // 2020-08-01 00:11:22 +0800 CST fmt.Println(currTime)}
时间运算
import ( "fmt" "time")
func main() { currTime := time.Now() // 时间相加,可改用负数做减法 fmt.Println(currTime.Add(time.Second * 10)) // 加 10秒 fmt.Println(currTime.Add(time.Minute * 10)) // 10分钟 fmt.Println(currTime.Add(time.Hour * 10)) // 10小时 fmt.Println(currTime.Add(time.Hour * 24 * 10)) // 10天
// 日期相加 fmt.Println(currTime.AddDate(1, 2, 3))
// 时间相减,结果以小时计 subTime := currTime.Add(time.Hour * 10).Sub(currTime) fmt.Println(subTime) // 返回 10h0m0s}