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() 中指定时间格式即可。

到此这篇关于Go中time.RFC3339 时间格式化的实现的文章就介绍到这了,更多相关Go time.RFC3339 时间格式化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • golang 使用time包获取时间戳与日期格式化操作

    Time包定义的类型 Time: 时间类型, 包含了秒和纳秒以及 Location Month: type Month int 月份. 定义了十二个月的常量 const ( January Month = 1 + iota February March April May June July August September October November December ) Weekday 类型: type Weekday int 周 定义了一周的七天 const ( Sunday Wee

  • golang gorm中格式化时间问题详解

    前言 最近在开发项目时遇到了发现一个问题, gorm虽然可以自动帮你维护 created_at.updated_at.deleted_at这些关键时间字段.但是其原理与弊端需要了解一下. 1.使用方法 通过自定义一个localtime的结构,来控制时间的格式 package utils import ( "time" //"strconv" "fmt" "database/sql/driver" "strconv&q

  • django rest framework serializer返回时间自动格式化方法

    django的时间是 models # models create_time = models.DateTimeField(blank=True, auto_now_add=True, null=True) 这是一个DateTimeField 我想返回的时候,直接格式化好 那就在 xxxSerializer(serializers.ModelSerializer): create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S

  • go语言中时间戳格式化的方法

    本文实例讲述了go语言中时间戳格式化的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: var t int64 = time.Now().Unix() var s string = time.Unix(t, 0).Format("2006-01-02 15:04:05") println(s) 这方式比较特别,按照123456来记忆吧:01月02号 下午3点04分05秒 2006年 希望本文所述对大家的Go语言程序设计有所帮助.

  • 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 M

  • python中日期和时间格式化输出的方法小结

    本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化日期时间的函数为datetime.datetime.strftime():由字符串转为日期型的函数为:datetime.datetime.strptime(),两个函数都涉及日期时间的格式化字符串,这里提供详细的代码详细演示了每一个参数的使用方法及范例. 下面是格式化日期和时间时可用的替换符号 %a 输出当前是星期几的英文简写 >>> import datetime >&

  • 详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例

    Angularjs内置的过滤器(filter)为我们的数据信息格式化提供了比较强大的功能,比如:格式化时间,日期.格式化数字精度.语言本地化.格式化货币等等.但这些过滤器一般都是在VIEW中使用的,比如格式化时间/日期的VIEW视图代码: <div ng-app> <p> <label>Select a date</label> <input type="date" id="date" ng-model=&quo

  • js中时间格式化的几种方法

    项目中时间返回值,很过时候为毫秒值,我们需要转换成 能够看懂的时间的格式: 例如: yyyy-MM-dd HH:mm:ss 2.处理方法(处理方法有多种,可以传值到前端处理,也可以后台可以好之后再传递到页面) 方法一:实体类中添加时间转换注解(注意时区问题) /** * 开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8") private Date startTime; 方法二:

  • vue中的过滤器及其时间格式化问题

    一.过滤器介绍 Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaScript 表达式的尾部,由 管道 符号指示: <!-- 在双花括号中 --> {{ message | capitalize }} <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId">

  • SpringBoot中时间格式化的五种方法汇总

    目录 前言 时间问题演示 1.前端时间格式化 JS 版时间格式化 2.SimpleDateFormat格式化 3.DateTimeFormatter格式化 4.全局时间格式化 实现原理分析 5.部分时间格式化 总结 参考 & 鸣谢 前言 在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格式化的几种方法. 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项目,其中数据库中包含了一张 userinfo 表,它的组成结构和数

  • JavaScript中时间格式化新思路toLocaleString()

    目录 1.时间格式化常规思路 2.时间格式化toLocaleString() 研究Object对象的时候,看到了 toLocaleString() 这个方法可以很简单的实现时间格式化. 1.时间格式化常规思路 正常思路是通过Date的实例依次获取年月日等,例如一个简单的格式化例子: Date.prototype.format = function(dateStr) { let date = new Date(); let year = date.getFullYear(); let month

  • python数据清洗中的时间格式化实现

    目录 1.字符串转时间 2.时间转字符串 3.时间戳相互转换 4.python中时间日期格式化符号: 1.字符串转时间 from datetime import datetime t = '2020年11月11日15:04:41' time = datetime.strptime(t,'%Y年%m月%d日%H:%M:%S') print(time) # 结果:2020-11-11 15:04:41 t1 = '2020-11-11 15:04:41' time1 = datetime.strpt

  • MySQL中的日期时间类型与格式化方式

    目录 [1]MySQL中的日期时间类型 ① 详细解释 ② SQL语句实例 ③ timestamp字段 ④ 测试实例 [2]日期时间类型格式化 ① DATE_FORMAT( )函数 ② date_format( ) 转换格式 ③ str_to_date()函数 [1]MySQL中的日期时间类型 MySQL中常用的几种时间类型有:date.datetime.time.year.timestamp 数据类型 占用字节 最小值 最大值 零值表示 date 4 1000-01-01 9999-12-31

  • Java中的日期时间处理及格式化处理

    目录 Date类 Calendar 类 DateFormat 类 SimpleDateFormat 类 Date类 在java.util.Date包中封装了许多现在的日期和时间, 构造函数: Date类表示特定的时间,精确到毫秒.在Java1.1之前,Date类中有好几个函数,允许把时间解释成年月日分秒,也允许解析和格式化日期字符串,由于这些函数不能实现国际化,从Java1.1之后,使用 Calendar 类实现日期和时间字段之间转换. Date d=new Date(); //使用当前日期和时

随机推荐