Go语言基础9 | 青训营笔记

45 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第9天

基础语法

时间处理

在Golang里面,最常用的时间处理就是time.Now(),可以快速获取当前时间。我们也可以用time.Date()去构造一个带时区的时。构造完的时间,上面有一系列方式:t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.second(),用这种方式来获取这个时间点的一系列信息(年月日时分秒)。你可以用.Sub对两个时间做一个减法,得到一个时间段。这个时间段可以得到它有多少个分钟多少秒。 通过 Time 结构体的 Format(layout string) 方法可以将时间转换成指定格式并以 string 类型返回。我们可以用time.Format()去格式化一个时间到一个时间字符串。然后格式化的时候,这里不像很多语言用的是那种YY:MM:DD,用的是一种特定的时间2006-01-02 15:04:05,这个时间是写在time包的官方文档上的。其中layout 格式参数,Go 强制我们使用 2006-01-02 15:04:05 这个固定的值,连接符如 - 可以改变,但是数字不能变,否则时间会对不上。你也可以用time.Parse(),用一个时间字符串的事例加一个字符串去解析成时间。在和某些系统交互的时候,我们经常会用到时间戳。你可以用time.Unix()来获取一个时间戳。

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now) // 2022-03-27 18:04:59.433297
    t := time.Date(2022, 3, 27, 1, 25, 36, 0, time.UTC)
    t2 := time.Date(2022, 3, 27, 2, 30, 36, 0, time.UTC)
    fmt.Println(t)                                                  // 2022-03-27 01:25:36 +0000 UTC
    fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute()) // 2022 March 27 1 25
    fmt.Println(t.Format("2006-01-02 15:04:05"))                    // 2022-03-27 01:25:36
    diff := t2.Sub(t)
    fmt.Println(diff)                           // 1h5m0s
    fmt.Println(diff.Minutes(), diff.Seconds()) // 65 3900
    t3, err := time.Parse("2006-01-02 15:04:05", "2022-03-27 01:25:36")
    if(err != nil) {
        panic(err)
    }
    fmt.Println(t3 == t)  // true
    fmt.Println(now.Unix) // 1648738080
}