Go语言time包常用操作指南

向北走
向北走
发布时间:2026-10-15 | 4人浏览过
原创

在Go语言开发中,正确且高效地处理时间是基础且关键的一环。本文详细梳理了 time 包的核心用法,从基础的时间获取到复杂的格式化、时间戳转换及差值计算,助力提升开发效率。

1. 获取当前时间

使用 time.Now() 函数可获取当前的本地时间,其返回值类型为 Time 结构体。该结构体是后续所有时间操作的基石。

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	fmt.Println(now) // 输出示例: 2023-10-27 14:30:00 +0800 CST m=+0.000000001
}

2. 提取具体时间单位

通过 Time 结构体的方法,可以直接获取年、月、日、时、分、秒等具体数值,便于业务逻辑中的条件判断或展示。

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	fmt.Printf("年份: %d\n", now.Year())       // 2023
	fmt.Printf("月份(数字): %d\n", int(now.Month())) // 10 (十月)
	fmt.Printf("日: %d\n", now.Day())          // 27
	fmt.Printf("小时: %d\n", now.Hour())        // 14
	fmt.Printf("分钟: %d\n", now.Minute())      // 30
	fmt.Printf("秒: %d\n", now.Second())        // 0
}

3. 时间格式化与解析

3.1 将时间转换为字符串

使用 Format(layout string) 方法。Go语言的引用时间为固定模板:2006-01-02 15:04:05(其中 1 代表一月,3 代表下午三点)。只需替换对应的连接符即可生成自定义格式的字符串。

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	// 格式: YYYY-MM-DD HH:MM:SS
	fmt.Println(now.Format("2006-01-02 15:04:05"))
	// 格式: YYYY/MM/DD
	fmt.Println(now.Format("2006/01/02"))
}

3.2 将字符串解析为时间

使用 time.Parse(layout, value) 函数将符合特定格式的字符串转换为 Time 类型,返回时间与错误信息。

package main

import (
	"fmt"
	"time"
)

func main() {
	t, err := time.Parse("2006-01-02 15:04:05", "2023-10-27 14:30:00")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(t)
}

4. 时间戳操作

时间戳常用于数据库存储或序列化。Go提供了便捷的纳秒、微秒、毫秒及秒级时间戳方法。

  • Unix(): 返回秒级 Unix 时间戳。
  • UnixMilli(): 返回毫秒级 Unix 时间戳。
  • UnixMicro(): 返回微秒级 Unix 时间戳。
  • UnixNano(): 返回纳秒级 Unix 时间戳。
package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	fmt.Println("秒:", now.Unix())
	fmt.Println("毫秒:", now.UnixMilli())
	fmt.Println("纳秒:", now.UnixNano())
}

5. 创建指定时间

通过 time.Date(year, month, day, hour, min, sec, nsec, loc) 可构建精确的 Time 对象。

package main

import (
	"fmt"
	"time"
)

func main() {
	// 创建 2023-10-27 14:00:00 UTC时间
	date := time.Date(2023, 10, 27, 14, 0, 0, 0, time.UTC)
	fmt.Println(date)
}

6. 时间的加减与差值计算

Go 使用 Duration 类型来封装时间间隔,支持时、分、秒等单位的运算。

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()
	
	// 增加一小时
	future := now.Add(time.Hour * 1)
	
	// 计算差值
	diff := future.Sub(now)
	fmt.Println("相差时间:", diff) // 输出: 1h0m0s
	
	// 判断先后关系
	fmt.Println("现在在指定时间前?", now.Before(future)) // true
	fmt.Println("现在在指定时间后?", now.After(future))  // false
}

小结

以上就是Go语言time包常用操作的详细内容,更多关于Golang时间处理技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表