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