From 33bd7657d746651f39a51e1a51490b0074fd39d0 Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Tue, 5 Oct 2021 14:29:27 +0800 Subject: [PATCH] docs: time --- base/time/main.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 base/time/main.go diff --git a/base/time/main.go b/base/time/main.go new file mode 100644 index 0000000..9a46f6b --- /dev/null +++ b/base/time/main.go @@ -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) +}