没有合适的资源?快使用搜索试试~ 我知道了~
首页golang时间、时区、格式的使用方法
前几天,因为需要实现海外服务端定时停机,涉及到时区的概念。网上搜索了一下,大部分都是谈time.Format中的Layout,非常不成体系,这里就简单总结一下其中的时间初始化、时区转化及格式转换。 开发中,我们对时间的使用是比较多的,其应用场景,按照使用概率,从大到小,通常是: 获取当前或数据库中存储的时间 比较两个时间点的先后 显示打印时间 时区转换 对应到go,也就是几个基本定义: 时间点与时间段:Time,Duration。好比MVC中的M。 时 区:Location,在时间转换上,好比是MVC中的C。 格式化:Format的layout定义,好比MVC中
资源详情
资源评论
资源推荐

golang时间、时区、格式的使用方法时间、时区、格式的使用方法
前几天,因为需要实现海外服务端定时停机,涉及到时区的概念。网上搜索了一下,大部分都是谈time.Format中的Layout,
非常不成体系,这里就简单总结一下其中的时间初始化、时区转化及格式转换。
开发中,我们对时间的使用是比较多的,其应用场景,按照使用概率,从大到小,通常是:
获取当前或数据库中存储的时间
比较两个时间点的先后
显示打印时间
时区转换
对应到go,也就是几个基本定义:
时间点与时间段:Time,Duration。好比MVC中的M。
时 区:Location,在时间转换上,好比是MVC中的C。
格式化:Format的layout定义,好比MVC中的V。
单独就Duration没什么好谈的,使用非常简单。Time实例中的Add、Sub与其相关,非常容易上手,就不再多说。
时区时区
时区是时间运算非常重要的概念,特别强调与layout是两个完全不同的概念。go语言通过Location来作为时区的运行实例,同
一时刻转换成为不同的时区,就需要通过不同的Location来进行。默认情况下,采用UTC(unix标准时间),而不是过去式的
GMT(格林尼治标准时间)。
以下代码展示了UTC标准、北京、美国洛杉矶在同一时刻的转换:
now := time.Now()
local1, err1 := time.LoadLocation("") //等同于"UTC"
if err1 != nil {
fmt.Println(err1)
}
local2, err2 := time.LoadLocation("Local")//服务器设置的时区
if err2 != nil {
fmt.Println(err2)
}
local3, err3 := time.LoadLocation("America/Los_Angeles")
if err3 != nil {
fmt.Println(err3)
}
fmt.Println(now.In(local1))
fmt.Println(now.In(local2))
fmt.Println(now.In(local3))
//output:
//2016-12-04 07:39:06.270473069 +0000 UTC
//2016-12-04 15:39:06.270473069 +0800 CST
//2016-12-03 23:39:06.270473069 -0800 PST
代码中,LoadLocation的输入参数的取值,除了该函数的源代码中可看到的”UTC”、”Local”,其余的值其实是遵照“IANA Time
Zone”的规则,可以解压$GOROOT/lib/time/zoneinfo.zip 这个文件打开查看。在Asia这个目录,我看到了
Chongqing,Hong_Kong,但没Beijing。在国外获取中国北京时间,要用”PRC”,当然”Asia/Chongqing”也是个方法:
loc, _:= time.LoadLocation("Asia/Chongqing") //参数就是解压文件的“目录”+“/”+“文件名”。
fmt.Println(time.Now().In(loc))
值得强调的是,Location仅用于时区转化,而不对time内部的数据产生影响(内部其实是unix标准时),因此,当几个time实
例进行Add、Sub的时候,不用关注Location是否相同。
时间格式化时间格式化
前面例子中,打印结果非常丑陋,通常没人关心秒之后的ns;明确时区后,很少需要与UTC的时差。这时候,就需要定义我
们的layout了。
网上好多都说,“2006-01-02 15:04:05是go的诞生时间,所以这么设计Format的Layout”,应该不是真的。请看下表:
01/Jan 02 03/15 04 05 06 -07[00][:00] PM Mon
月 日 时 分 秒 年 时差
上下午
星期几


















weixin_38606041
- 粉丝: 5
- 资源: 934
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0