time 包的简单使用

时区

  1. 中国大陆一共分了5个时区,以哈尔滨 ( Asia/Harbin)、上海(Asia/Shanghai)、重庆(Asia/Chongqing)、乌鲁木齐(Asia/Urumqi)、喀什(Asia/Kashgar)
  2. 长白时区GMT+8:30、中原标准时区 GMT+8、陇蜀时区GMT+7、新藏时区GMT+6和昆仑时区GMT+5:30。它是1912年北京观象台制订,后由内政部批准过。
  3. 香港时区(Asia/Hong_Kong或者Hongkong),台北(Asia/Taipei)

时间格式化

  1. 使用 Format 函数进行格式化
  2. 最常使用格式化模板
    2006-01-02 15:04:05
  3. 使用范例:
package main

import (
    "fmt"
    "time"
)

const TimeLayout = "2006-01-02 15:04:05"

func main() {
    fmt.Println(time.Now().Format(TimeLayout))
}

字符串转时间

  1. 通过 Parse 转换,默认是 UTC 时间
package main

import (
    "fmt"
    "time"
)

const TimeLayout = "2006-01-02 15:04:05"

func main() {
    timeString := "2008-08-08 20:08:08"
    fmt.Println(time.Parse(TimeLayout, timeString))
}
  1. 通过 ParseInLocation 转换,需要传时区

    • 示例

      package main
      
      import (
        "fmt"
        "time"
      )
      
      const TimeLayout = "2006-01-02 15:04:05"
      
      func main() {
        timeString := "2008-08-08 20:08:08"
        fmt.Println(time.ParseInLocation(TimeLayout, timeString, time.Local))
      }
      
    • time.Local 返回本机时区

    • 通过时区名返回时区
      loc, err := time.LoadLocation("Asia/Shanghai")

Unix 时间戳转时间

package main

import (
    "fmt"
    "time"
)

func main() {
    unixSeconds := int64(1688110691)
    fmt.Println(time.Unix(unixSeconds, 0))
}

时间运算

  1. 计算时间差
func Until(t Time) Duration
func Since(t Time) Duration 两个时间点的间隔
func (t Time) Sub(u Time) Duration  
  1. 计算时间点
func (t Time) Add(d Duration) Time
func (t Time) AddDate(years int, months int, days int) Time
  1. 时间比较
func (t Time) Before(u Time) bool
func (t Time) After(u Time) bool
func (t Time) Equal(u Time) bool 

延时,定时任务

time.Sleep(time.Duration(10) * time.Second)
func After(d Duration) <-chan Time
func AfterFunc(d Duration, f func()) *Timer
package main

import (
    "fmt"
    "time"
)

func main() {
    count := 0
    ticker := time.NewTicker(1 * time.Second)
    for t := range ticker.C {
        fmt.Println(t)
        count++
        fmt.Println(count)
        if count == 10 {
            ticker.Stop()
            break
        }
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
CodeFarmer
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!