怎么在Go中使用time.RFC3339格式化时间-创新互联
怎么在Go中使用time.RFC3339格式化时间?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的做网站、网站制作质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都营销网站建设需求,让再小的成都品牌网站建设也能产生价值!在开发过程中,我们有时会遇到这样的问题,将 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
看完上述内容,你们掌握怎么在Go中使用time.RFC3339格式化时间的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享文章:怎么在Go中使用time.RFC3339格式化时间-创新互联
链接分享:http://azwzsj.com/article/djhodg.html