docs: time

This commit is contained in:
Shikong 2021-10-05 14:29:27 +08:00
parent b703bdc4dd
commit 33bd7657d7

63
base/time/main.go Normal file
View File

@ -0,0 +1,63 @@
package main
import (
"fmt"
"time"
)
// 时间
func main() {
now := time.Now()
fmt.Println(now)
fmt.Printf("%04d年%02d月%02d日 %02d:%02d:%02d\n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
// 时间戳 (秒)
fmt.Printf("%d\n", now.Unix())
// 时间戳 (纳秒)
fmt.Printf("%d\n", now.UnixNano())
// 时间戳转时间对象 (秒)
unixT := time.Unix(now.Unix(), 0)
fmt.Println(unixT)
// 时间戳转时间对象 (纳秒)
unixNanoT := time.Unix(0, now.UnixNano())
fmt.Println(unixNanoT)
// 时间间隔
fmt.Printf("1 秒 = %d 纳秒 \n", time.Second)
// 时间计算
fmt.Printf("一小时前: %s\n现 在: %s\n一小时后: %s\n", now.Add(-1*time.Hour), now, now.Add(1*time.Hour))
// 定时器
tick := time.Tick(time.Millisecond)
var t uint
for i := range tick {
// 需要执行的定时任务
if t >= 3 {
break
}
fmt.Println(i)
t++
}
// 时间格式化
// Golang 中 时间格式化不是 常见的 yyyy-MM-DD HH:mm:ss
// 而是 2006-01-02 15:04:05 的形式
// Mon Jan 2 15:04:05 -0700 MST 2006
// 2006-01-02 15:04:05.999999999 -0700 MST
// 2006/06 年份
// 01 月份
// 02 某天
// 03/15 12/24制 小时
// 04 分
// 05 秒
// 99 毫秒/微妙/纳秒
fmt.Println(now.Format("2006-01-02 15:04:05.99"))
// 字符串 转 时间对象
// 默认为 UTC 时区 需手动指定 或 使用 ParseInLocation
fmt.Println(time.Parse("2006-01-02 15:04:05.99 MST", "1970-01-01 08:00:00.00 CST"))
// 根据 本机时区 转换 时间对象
localTime, _ := time.ParseInLocation("2006-01-02 15:04:05.99", "1970-01-01 08:00:00.00", time.Local)
fmt.Println(localTime)
}