📜  GO语言 time(1)

📅  最后修改于: 2023-12-03 15:15:25.104000             🧑  作者: Mango

GO语言 time

在Go语言中,时间操作是非常重要的,Go语言提供了一个time包来实现日期和时间的的处理。

1. 时间类型

Go语言中有两种时间类型:

  • Time:表示一个时间点,可以通过time.Now()获取当前时间。
  • Duration:表示一个时间段,可以是负数。
2. 时间表达式

Go语言中的时间表达式使用基于RFC3339标准的固定格式:“2006-01-02T15:04:05Z07:00”。

具体解释如下:

  • 2006:年份。
  • 01:月份。
  • 02:日期。
  • 15:小时,24小时制。
  • 04:分钟。
  • 05:秒。
  • Z07:00:表示UTC时区的偏移量。Z表示时区名字(0时区),07:00表示偏移量(东7区)。
3. 时间计算

我们可以使用 time.Duration 类型来表示一段时间段。时间段可以是负数,常用的单位有:“ns”(纳秒)、“us”(微秒)、“ms”(毫秒)、“s”(秒)、“m”(分)、“h”(小时)。

计算时间也非常简单,可以对 Time 类型进行加减计算。

func main() {
    loc, _ := time.LoadLocation("Local")
    t := time.Date(2022, time.January, 1, 0, 0, 0, 0, loc)

    // 添加5分30秒
    t = t.Add(time.Minute * 5 + time.Second * 30)

    // 减去1小时
    t = t.Add(-time.Hour)

    fmt.Println(t.Format("2006-01-02 15:04:05"))
}

输出结果为:“2021-12-31 23:05:30”。

4. 时间格式化

时间格式化可以使用 Time.Format 方法来实现。在格式化时间的时候,可以使用一些特定的占位符,如下:

  • “2006”:代表年份。
  • “01”:代表月份。
  • “02”:代表日期。
  • “15”:代表小时(24小时制)。
  • “04”:代表分钟。
  • “05”:代表秒。
  • “PM”或“pm”:代表上午或下午。
func main() {
    loc, _ := time.LoadLocation("Local")
    t := time.Date(2022, time.January, 1, 10, 30, 0, 0, loc)

    fmt.Println(t.Format("2006-01-02 15:04:05"))
    fmt.Println(t.Format(time.ANSIC))
    fmt.Println(t.Format("Mon Jan _2 15:04:05 2006"))
    fmt.Println(t.Format("2006-01-02T15:04:05.999999-07:00"))
}

输出结果为:

2022-01-01 10:30:00
Sat Jan  1 10:30:00 2022
Sat Jan  1 10:30:00 2022
2022-01-01T10:30:00.000000-08:00