ITPub博客

首页 > 应用开发 > IT综合 > Golang基础笔记十一之日期与时间处理

Golang基础笔记十一之日期与时间处理

原创 IT综合 作者:lxz2266 时间:2025-07-16 08:01:51 0 删除 编辑


  1. 当前日期与时间的获取
  2. 字符串与时间格式的互相转换
  3. 时间戳与时间格式的互相转换
  4. 日期与时间的加减
  5. 星期数的获取
  6. 定时器与计时器

1、当前日期与时间的获取

在 Golang 里,日期和时间处理都通过 time 包来实现。

如果我们想获取当前时间,我们可以使用 time.Now() 来操作:

now := time.Now()
fmt.Println(now)  // 2025-06-29 12:29:16.112605 +0800 CST m=+0.000154626

如果我们想获取单独的年月日时分秒字段,可以使用下面的操作:

now := time.Now()
year, month, day := now.Date()
hour, minute, second := now.Clock()
fmt.Println(year, month, day)  // 2025 June 29fmt.Println(hour, minute, second)  // 15 29 50

可以看到输出的月份是  June,但实际上月份是一个自定义的类型  Month,本质上也是一个 int 型数据,其源代码如下:

type Month intconst (
    January Month = 1 + iota
    February
    March
    April
    May
    June
    July
    August
    September
    October
    November
    December
)

所以,对于这里的年月日时分秒的单个变量,我们想将其组合输出为一般的  %Y-%m-%d %H:%M:%S 格式,可以如下操作:

fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)

我们也可以分别单独获取对应的年月日时分秒数据:

now := time.Now()
fmt.Println(now.Year())
fmt.Println(now.Month())
fmt.Println(now.Day())
fmt.Println(now.Hour())
fmt.Println(now.Minute())
fmt.Println(now.Second())

2、字符串与时间格式的互相转换

1. 时间格式转字符串

在其他计算机语言中,如果想将时间字段转化为字符串,格式化的操作比如 Python,一般是类似于  %Y-%m-%d %H:%M:%S 这种,但是 Golang 里是一个特殊的格式化字段,为  2006-01-02 15:04:05。

Go 里对时间字段格式化的函数为  Format(),下面是将时间格式转为字符串的操作为:

now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05")) // 2025-06-29 22:45:11

当然,格式化操作也可以单独针对日期,或者时间,连接的符号也可以自定义:

now := time.Now()
fmt.Println(now.Format("2006/01/02"))  // 2025/06/29fmt.Println(now.Format("15:04:05"))  // 23:22:06

2. 字符串转时间格式

字符串转时间格式使用  time.Parse() 函数,以下是一个测试:

timeStr := "2025/06/29"t, err := time.Parse("2006/01/02", timeStr)if err != nil {
    fmt.Println("str to time error: ", err)
} else {
    fmt.Println("str to time is: ", t)
}// str to time is:  2025-06-29 00:00:00 +0000 UTC

在这里 time.Parse() 返回两个字段,一个是转换后的时间字段,一个是转换过程中的错误。

上面是转换日期,转换时间也是一样的操作:

timeStr = "20:24:24"t, err := time.Parse("15:04:05", timeStr)if err != nil {
    fmt.Println("str to time error: ", err)
} else {
    fmt.Println("str to time is: ", t)
}// str to time is:  0000-01-01 20:24:24 +0000 UTC

而如果提供了错误的时间字符串,返回的 err 字段则不会为空,比如下面这个示例:

timeStr := "2025/13/29"t, err := time.Parse("2006/01/02", timeStr)if err != nil {
    fmt.Println("str to time error: ", err)
} else {
    fmt.Println("str to time is: ", t)
}// str to time error:  parsing time "2025/13/29": month out of range

3、时间戳与时间格式的互相转换

另一个在时间函数中常用到的用于转换的数据是时间戳,下面介绍一下时间戳与时间的互相转换。

1. 时间格式转换为时间戳


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046763/viewspace-3091252/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2025-06-14

  • 博文量
    14
  • 访问量
    13510