网络编程
位置:首页>> 网络编程>> Go语言>> Go中time.RFC3339 时间格式化的实现

Go中time.RFC3339 时间格式化的实现

作者:新亮笔记  发布时间:2024-02-07 21:24:55 

标签: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

小结

同理,若遇到 RFC3339Nano、RFC822、RFC1123 等格式,也可以使用类似的方法,只需要在 time.Parse() 中指定时间格式即可。

来源:https://juejin.cn/post/6921123487235080200

0
投稿

猜你喜欢

  • 本文主要介绍了pandas统计重复值次数的方法实现,分享给大家,具体如下:from pandas import DataFramedf =
  • 你一定想下载一下感兴趣的网页,以便慢慢欣赏吧!利用FrontPage能够轻松做到这一点,甚至可以下载整个站点,当然这里只能下载静态的页面。启
  • 需求背景在很多时候我们需要抽取视频的某一帧做一些分析或修改等;比如笔者需求就是判断一个人在该视频中出现的频率,以判断他是否是这段视频的主角;
  • 1、最近公司实现部分数据统计、分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linu
  • 一、介绍使用pandas.DataFrame的plot方法绘制图像会按照数据的每一列绘制一条曲线,默认按照列columns的名称在适当的位置
  • 本文实例为大家分享了vue 渐进过渡效果,供大家参考,具体内容如下,供大家参考,具体内容如下transition 与 v-for 一起用时可
  • Mac本地环境搭建在Mac系统,我们可以使用MAMP Pro (官方网站:https://www.mamp.info/en/)软件来搭建本地
  • 前言python下的setuptools带有一个easy_install的工具,在安装python的每三方模块、工具时很有用,也很方便。安装
  • 这篇文章主要介绍了python StringIO如何在内存中读写str,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
  • 对于多层感知机而言,整个模型做的事情就是接收输入生成输出。但是并不是所有的多层神经网络都一样,所以为了实现复杂的神经网络就需要神经网络块,块
  • 这段时间因为要做个网站,而空间又不支持ASP,所以又拿起JavaScript教程看了下,看能不能在静态的空间里实现动态,当然,这个动态不是真
  • 在说这两兄弟前,先做一个实验:我在Win7下新建左一个文本文件test.txt,然后用记事本打开输入如下内容,保存然后用UltraEdit以
  • 前言编写函数或者类时,还可以为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。本次我将介绍如何使用Python模块uni
  • 目录小而美简单至上避免空值选择数据类型的步骤数据类型介绍一、串数据类型二、数值数据类型三、日期和时间数据类型四、二进制数据类型结语:小而美通
  • 在生活和工作中,我们每个人每天都在和时间打交道:早上什么时候起床?地铁几分钟来一趟?中午什么时候开始午休?明天是星期几?距离上次买衣服已经2
  • 前言大家应该都有所体会,在不同的项目可能会使用不同的Django版本,兼任性是大问题,如果不幸要去接手不同版本的项目,比较惨烈!如果想重装一
  • 1 map使用1.1 map定义map是一种无序的集合,对应的key (索引)会对应一个value(值),所以这个结构也称为关联数组或字典。
  • 1、定义和使用列表在Python中,列表是由一系列元素按照特定的顺序构成的数据结构,也就是说列表类型的变量可以存储多个数据,且可以重复。1.
  • 看到这个先思考,自己怎么输出他?为什么它有颜色?特殊符号去哪找?特殊符号在符号大全找 符号大全http://www.fhdq.net/任务1
  • 下面说说主要实现思路: 1、存取图片 (1)、将图片文件转换为二进制并直接存进sql server //UploadHelper.cs //
手机版 网络编程 asp之家 www.aspxhome.com