Go各时间字符串使用解析


Posted in Golang onApril 02, 2021

Go 中时间格式化的模板

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"
)

上面这些是官方定义的layout常量,我们自己也可以定义,如:

"2006-01-02 15:04:05"
"2006-01-02"
"2006-01-02 15:04"
"2006-01-02T15:04" //js和html中多用这种形式
"2006-01-02 15:03:04 -0700 MST"

Format 格式化为字符串

format 的使用对象是一个 time.Time 对象,可以使用官方或者自己定义的布局进行格式化的输出,如:

now := time.Now()
now.Format("2006-01-02 15:04:05") //输出 2020-07-21 10:12:13

Parse 字符串解析为时间戳或int64

Parse 方法

需要两个参数,第一个是布局,第二个是字符串

//Parse解析格式化的字符串并返回它表示的时间值。
//布局通过显示参考时间(定义为2006年1月2日星期一1:04:05 -0700
//如果它是值,则将被解释;它作为一个例子
//输入格式。然后将对输入字符串。预定义的布局ANSIC,UnixDate,RFC3339等描述了参考时间的标准和便捷表示形式。有关格式和参考时间的定义的更多信息,请参见ANSIC文档以及此程序包定义的其他常量。
//解析时间偏移为-0700的时间时,如果偏移量对应于当前位置(本地)使用的时区,则Parse在返回的时间中使用该位置和时区。否则,它将时间记录为处于伪造位置,时间固定在给定的区域偏移量。
//
//另外,Time.Format的可执行示例详细说明了布局字符串的工作原理,是一个很好的参考。
//
//值中省略的元素假定为零,或者
//零不可能为1,因此解析“ 3:04 pm”将返回时间
//对应于1月1日,0,15:04:00 UTC(请注意,因为年份是
//0,此时间早于零时间)。
//年份必须在0000..9999的范围内。将检查星期几的语法,否则将忽略该语法。
//
//解析带有MST等区域缩写的时间时,如果该区域缩写在当前位置具有已定义的偏移量,则使用该偏移量。
//区域缩写“ UTC”被识别为UTC,与位置无关。
//如果未知区域缩写,则Parse将时间记录为位于指定位置的伪造位置,并具有零偏移量。
//此选择意味着可以使用相同的布局无损地解析和重新格式化这样的时间,但是表示中使用的确切瞬间将因实际区域偏移而有所不同。为避免此类问题,请首选使用数字区域偏移量的时间布局或使用ParseInLocation。
func Parse(layout, value string) (Time, error) {
 return parse(layout, value, UTC, Local)
}

使用例子:

eg, err := time.Parse("2006-01-02 15:04:05 -0700 MST", "2019-08-29 16:48:21 +0800 CST")
//输出结果为time.Time格式 使用 format格式化后为 2019-08-29 16:48:21 
ParseInLocation
//ParseInLocation类似于Parse,但在两个重要方面有所不同。
//首先,在没有时区信息的情况下,Parse将时间解释为UTC;
//ParseInLocation将时间解释为给定位置。
//第二,当给定区域偏移量或缩写时,Parse尝试将其与本地位置进行匹配; ParseInLocation使用给定的位置
func ParseInLocation(layout, value string, loc *Location) (Time, error) {
 return parse(layout, value, loc, loc)
}

参数: 1. 布局 2. 字符串 3. 时区

获取本地时区可以使用 time.Local

使用例子:

onlineAt, err := time.ParseInLocation("2006-01-02T15:04", "2020-01-02T15:04"), time.Local)

解析为int64

对于 time.Time 对象,可以使用.Unix() 方法转为 int64,如:

eg.Unix() //默认使用 UTC时区 
eg.Local().Unix() //返回本地时区的时间戳 int64

参考文章: golang的时区和神奇的time.Parse

到此这篇关于Go各时间字符串使用解析的文章就介绍到这了,更多相关Go 时间字符串 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
Go Gin实现文件上传下载的示例代码
Apr 02 Golang
一文读懂go中semaphore(信号量)源码
Apr 03 Golang
go语言map与string的相互转换的实现
Apr 07 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
golang elasticsearch Client的使用详解
May 05 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
Golang全局变量加锁的问题解决
May 08 Golang
golang内置函数len的小技巧
Jul 25 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
Apr 10 Golang
golang使用map实现去除重复数组
Apr 14 Golang
Golang 遍历二叉树
Apr 19 Golang
Go 内联优化让程序员爱不释手
Jun 21 Golang
Go Gin实现文件上传下载的示例代码
Apr 02 #Golang
一文读懂go中semaphore(信号量)源码
Apr 03 #Golang
go语言map与string的相互转换的实现
Apr 07 #Golang
Golang二维切片初始化的实现
Apr 08 #Golang
为什么不建议在go项目中使用init()
Apr 12 #Golang
Go语言操作数据库及其常规操作的示例代码
Apr 21 #Golang
golang判断key是否在map中的代码
Apr 24 #Golang
You might like
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python连接DB2数据库
2016/08/27 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
我的网上商城创业计划书
2013/12/26 职场文书
九年级化学教学反思
2014/01/28 职场文书
婚礼司仪主持词
2014/03/14 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
党员创先争优活动总结
2014/05/04 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书