Go 语言日期与时间处理完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Go语言中日期和时间操作入门

日期和时间操作是任何编程语言中的关键任务之一。Go语言(Golang)提供了强大且直观的time包,可以执行所有基本操作:获取当前时间、解析字符串、格式化、计算时间差、创建定时器等等。与其他一些语言不同,Go使用独特的参考时间格式,这使得代码更具可读性和可预测性。在本文中,我们将通过实际示例详细解析time包的主要功能。



基本类型与获取当前时间

time.Time类型

time包中的核心类型是time.Time结构体。它存储有关秒、纳秒、时区和单调计数器(用于精确测量)的信息。



获取当前时刻

要获取当前时间,使用time.Now()函数。它基于系统设置返回本地时间。

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("当前时间:", 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()) fmt.Println("纳秒:", now.Nanosecond()) fmt.Println("星期几:", now.Weekday())}


手动创建时间

您可以使用time.Date()函数创建特定的时间点。它接受年、月、日、时、分、秒、纳秒和时区。

package main

import ( "fmt" "time")

func main() { // 2025年3月15日,14:30:00,UTC specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("创建的日期:", specificDate)}


日期解析与格式化

Go的参考格式

Go使用独特的格式化方法:不是使用像YYYY-MM-DD这样的代码,而是使用参考日期 Mon Jan 2 15:04:05 MST 2006(或简写为2006-01-02T15:04:05Z07:00)。这意味着要指定年份,您写2006;月份写01;日期写02;小时写15(或12小时制用03);分钟写04;秒写05。



将时间格式化为字符串

Format()方法根据给定的模板将time.Time转换为字符串。

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("标准格式:", now.Format("2006-01-02 15:04:05")) fmt.Println("中文格式:", now.Format("2006年01月02日 15:04")) fmt.Println("仅日期:", now.Format("02 Jan 2006")) fmt.Println("12小时制:", now.Format("03:04:05 PM"))}


将字符串解析为日期

time.Parse()函数将字符串转换为time.Time。重要的是字符串必须与模板匹配。

package main

import ( "fmt" "time")

func main() { dateStr := "2025-03-15 14:30:00" layout := "2006-01-02 15:04:05" parsedTime, err := time.Parse(layout, dateStr) if err != nil { fmt.Println("解析错误:", err) return } fmt.Println("解析后的时间:", parsedTime) fmt.Println("星期几:", parsedTime.Weekday())}


带时区的解析

对于带时区的字符串,使用time.ParseInLocation()或在模板中指定偏移量(Z07:00)。

package main

import ( "fmt" "tim

博客

书籍推荐