[系列] Go - time.RFC3339 时间格式化
2020-12-27 16:54
330 查看
在开发过程中,我们有时会遇到这样的问题,将
2020-11-08T08:18:46+08:00转成
2020-11-08 08:18:46,怎么解决这个问题?
解决这个问题,最好不要用字符串截取,或者说字符串截取是最笨的方法,这应该是时间格式化的问题。
我们先看一下 golang time 包中支持的 format 格式:
const ( 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" // RFC822 with numeric zone RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" Kitchen = "3:04PM" // Handy time stamps. Stamp = "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" )
我们找到了
RFC3339,那就很简单了,我们封装一个方法
RFC3339ToCSTLayout,见下面代码。
package timeutil import "time" var ( cst *time.Location ) // CSTLayout China Standard Time Layout const CSTLayout = "2006-01-02 15:04:05" func init() { var err error if cst, err = time.LoadLocation("Asia/Shanghai"); err != nil { panic(err) } } // RFC3339ToCSTLayout convert rfc3339 value to china standard time layout func RFC3339ToCSTLayout(value string) (string, error) { ts, err := time.Parse(time.RFC3339, value) if err != nil { return "", err } return ts.In(cst).Format(CSTLayout), nil }
运行一下
RFC3339Str := "2020-11-08T08:18:46+08:00" cst, err := timeutil.RFC3339ToCSTLayout(RFC3339Str) if err != nil { fmt.Println(err) } fmt.Println(cst)
输出:
2020-11-08 08:18:46
小结
同理,若遇到
RFC3339Nano、
RFC822、
RFC1123等格式,也可以使用类似的方法,只需要在
time.Parse()中指定时间格式即可。
相关文章推荐
- go时间格式化必须精确地限定到 golang 指定的时间原点:2006-01-02 15:04:05
- Android 系列 2.10格式化显示的时间和日期
- 【python系列】datetime时间格式化
- go 格式化时间戳
- Go 语言中格式化时间
- go time Format 格式化时间的使用
- GO语言时间格式化,奇葩得不想说了
- Go时间格式化和类型互换操作
- go语言中时间戳格式化的方法
- Go语言时间格式化
- Go基础系列:为select设置超时时间
- Go时间格式化和类型互换操作
- Go基础编程:格式化输出、类型转换、类型别名
- SQL中时间格式化
- JAVA格式化时间日期
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- [系列] Go 如何解析 JSON 数据?
- Python datetime时间格式化去掉前导0
- go 获得进程启动时间的两种方法
- js格式化时间