golang格式化并解析时间或日期[完整指南]

本文详细介绍了Go语言中如何格式化和解析时间,包括基本时间格式示例、常见日期时间布局、预定义的布局选项以及相关的小案例。在Go中,时间处理不使用'yyyy-mm-dd'格式,而是采用特殊布局参数。同时,文章提到在24小时制中不能直接表示24:00,以及不支持闰秒的情况。
摘要由CSDN通过智能技术生成

基本时间格式示例

Go不使用yyyy-mm-dd布局来格式化或解析时间。而是格式化一个特殊的布局参数
Mon Jan 2 15:04:05 MST 2006

与格式化时间或日期的方式相同。(这个日期在写成时更容易记住01/02 03:04:05PM ‘06 -0700。)

const (
    layoutISO = "2006-01-02"
    layoutUS  = "January 2, 2006"
)
date := "1999-12-31"
t, _ := time.Parse(layoutISO, date)
fmt.Println(t)                  // 1999-12-31 00:00:00 +0000 UTC
fmt.Println(t.Format(layoutUS)) // December 31, 1999

函数

  • time.Parse 解析日期字符串
  • Format格式化 time.Time。

他们有以下用法:

func Parse(layout, value string) (Time, error)
func (t Time) Format(layout string) string

常见的时间和日期布局

LayoutNote
January 2, 2006
01/02/06
Jan-02-06
Date
15:04:05
3:04:05 PM
Time
Jan _2 15:04:05
Jan _2 15:04:05.000000
Timestamp
with microseconds
2006-01-02T15:04:05-0700
2006-01-02 15:04:05
ISO 8601 (RFC 3339)
02 Jan 06 15:04 MST
02 Jan 06 15:04 -0700
RFC 822
with numeric zone

预定义的日期和时间戳布局

还可以使用以下预定义格式常量。

ANSIC =“Mon Jan _2 15:04:05 2006”
UnixDate =“Mon Jan _2 15:04:05 MST 2006”
RubyDate =“Mon Jan 02 15:04:05 -0700 2006”
RFC822 =“02 Jan 06 15:04 MST”
RFC822Z =“02 Jan 06 15:04 -0700”
RFC850 =“星期一,02-Jan-06 15:04:05 MST”
RFC1123 =“星期一,2006年1月2日15:04:05 MST”
RFC1123Z =“星期一,2006年1月2日15:04:05 -0700”
RFC3339 =“2006-01-02T15:04:05Z07:00”
RFC3339Nano =“2006-01-02T15:04:05.999999999Z07:00”
厨房=“下午3:04”
//便利的时间戳。
邮票=“Jan _2 15:04:05”
StampMilli =“Jan _2 15:04:05.000”
StampMicro =“Jan _2 15:04:05.000000”
StampNano =“Jan _2 15:04:05.000000000”

所有layout选项

TypeOptions
Year
Month
Day
Weekday
06 2006
01 1 Jan January
02 2 _2 (width two, right justified)
Mon Monday
Hours
Minutes
Seconds
ms μs ns
ms μs ns
03 3 15
04 4
05 5
.000 .000000 .000000000
.999 .999999 .999999999 (trailing zeros removed)
am/pmPM pm
Timezone
Offset
MST
-0700 -07 -07:00 Z0700 Z07:00

小案例

在24小时时间格式中,不可能指定在没有前缀零的情况下渲染一个小时。

不可能指定午夜为24:00,得用00:00。一个典型的用法是使用开区间时间在午夜结束,例如07:00-24:00。(译者注:使用24:00会报错hour out of range)

无法指定包含闰秒(leap second)的时间:23:59:60。实际上,时间包假设没有闰秒的公历。

翻译:https://yourbasic.org/golang/format-parse-string-time-date-example/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值