目录
前言时间类型Location和time zone时间间隔AddsubBeforeAfter定时器时间格式化时间格式化的时间总结前言
在我们开发的过程中,每个项目都需要时间这一类的函数,此时,对time这个包的研究深度就显得尤为重要,现在,对time包中的各种函数做出一个总结,加深一些记忆,
时间类型
Go语言中,time.Time类型表示时间。我们可以通过time.Now函数获取当前时间的对象,然后从时间对象中获取到年,月,日,时,分,秒等信息,代码如下
【资料图】
// timeDemo 时间对象的年月日时分秒 func timeDemo() { now := time.Now() // 获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() // 年 month := now.Month() // 月 day := now.Day() // 日 hour := now.Hour() // 小时 minute := now.Minute() // 分钟 second := now.Second() // 秒 fmt.Println(year, month, day, hour, minute, second) }
Location和time zone
Go 语言中使用 location 来映射具体的时区。时区(Time Zone)是根据世界各国家与地区不同的经度而划分的时间定义,全球共分为24个时区。中国差不多跨5个时区,但为了使用方便只用东八时区的标准时即北京时间为准。
下面的示例代码中使用beijing来表示东八区8小时的偏移量,其中time.FixedZone和time.LoadLocation`这两个函数则是用来获取location信息。
// timezoneDemo 时区示例 func timezoneDemo() { // 中国没有夏令时,使用一个固定的8小时的UTC时差。 // 对于很多其他国家需要考虑夏令时。 secondsEastOfUTC := int((8 * time.Hour).Seconds()) // FixedZone 返回始终使用给定区域名称和偏移量(UTC 以东秒)的 Location。 beijing := time.FixedZone("Beijing Time", secondsEastOfUTC) // 如果当前系统有时区数据库,则可以加载一个位置得到对应的时区 // 例如,加载纽约所在的时区 newYork, err := time.LoadLocation("America/New_York") // UTC-05:00 if err != nil { fmt.Println("load America/New_York location failed", err) return } fmt.Println() // 加载上海所在的时区 //shanghai, err := time.LoadLocation("Asia/Shanghai") // UTC+08:00 // 加载东京所在的时区 //tokyo, err := time.LoadLocation("Asia/Tokyo") // UTC+09:00 // 创建时间对象需要指定位置。常用的位置是 time.Local(当地时间) 和 time.UTC(UTC时间)。 //timeInLocal := time.Date(2009, 1, 1, 20, 0, 0, 0, time.Local) // 系统本地时间 timeInUTC := time.Date(2009, 1, 1, 12, 0, 0, 0, time.UTC) sameTimeInBeijing := time.Date(2009, 1, 1, 20, 0, 0, 0, beijing) sameTimeInNewYork := time.Date(2009, 1, 1, 7, 0, 0, 0, newYork) // 北京时间(东八区)比UTC早8小时,所以上面两个时间看似差了8小时,但表示的是同一个时间 timesAreEqual := timeInUTC.Equal(sameTimeInBeijing) fmt.Println(timesAreEqual) // 纽约(西五区)比UTC晚5小时,所以上面两个时间看似差了5小时,但表示的是同一个时间 timesAreEqual = timeInUTC.Equal(sameTimeInNewYork) fmt.Println(timesAreEqual) }
时间间隔
time.Duration是time包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单位。time.Duration表示一段时间间隔,可表示的最长时间段大约290年。
Add
func main() { now := time.Now() later := now.Add(time.Hour) // 当前时间加1小时后的时间 fmt.Println(later) }
sub
返回一个时间段t-u。如果结果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。要获取时间点t-d(d为Duration),可以使用t.Add(-d)。
func (t Time) Sub(u Time) Duration
Before
如果t代表的时间点在u之前,返回真;否则返回假
func (t Time) Before(u Time) bool
After
如果t代表的时间点在u之后,返回真;否则返回假。
func (t Time) After(u Time) bool
定时器
使用time.Tick(时间间隔)来设置定时器,定时器的本质上是一个通道(channel)。
unc tickDemo() { ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器 for i := range ticker { fmt.Println(i)//每秒都会执行的任务 } }
时间格式化
time.Format函数能够将一个时间对象格式化输出为指定布局的文本表示形式,需要注意的是 Go 语言中时间格式化的布局不是常见的Y-m-d H:M:S,而是使用 2006-01-02 15:04:05.000(记忆口诀为2006 1 2 3 4 5)。
其中:
2006:年(Y)
01:月(m)
02:日(d)
15:时(H)
04:分(M)
05:秒(S)`
// formatDemo 时间格式化 func formatDemo() { now := time.Now() // 格式化的模板为 2006-01-02 15:04:05 // 24小时制 fmt.Println(now.Format("2006-01-02 15:04:05.000 Mon Jan")) // 12小时制 fmt.Println(now.Format("2006-01-02 03:04:05.000 PM Mon Jan")) // 小数点后写0,因为有3个0所以格式化输出的结果也保留3位小数 fmt.Println(now.Format("2006/01/02 15:04:05.000")) // 2022/02/27 00:10:42.960 // 小数点后写9,会省略末尾可能出现的0 fmt.Println(now.Format("2006/01/02 15:04:05.999")) // 2022/02/27 00:10:42.96 // 只格式化时分秒部分 fmt.Println(now.Format("15:04:05")) // 只格式化日期部分 fmt.Println(now.Format("2006.01.02")) }
时间格式化的时间
对于从文本的时间表示中解析出时间对象,time包中提供了time.Parse和time.ParseInLocation两个函数。
其中time.Parse在解析时不需要额外指定时区信息。
// parseDemo 指定时区解析时间 func parseDemo() { // 在没有时区指示符的情况下,time.Parse 返回UTC时间 timeObj, err := time.Parse("2006/01/02 15:04:05", "2022/10/05 11:25:20") if err != nil { fmt.Println(err) return } fmt.Println(timeObj) // 2022-10-05 11:25:20 +0000 UTC // 在有时区指示符的情况下,time.Parse 返回对应时区的时间表示 // RFC3339 = "2006-01-02T15:04:05Z07:00" timeObj, err = time.Parse(time.RFC3339, "2022-10-05T11:25:20+08:00") if err != nil { fmt.Println(err) return } fmt.Println(timeObj) // 2022-10-05 11:25:20 +0800 CST
总结
到此这篇关于go语言中time包的各种函数总结的文章就介绍到这了,更多相关go语言time包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
-
go语言中time包的各种函数总结_焦点热闻时间和日期是我们编程中经常会用到的,下面这篇文章主要给大家介绍了关于go语言中time包的各种函数总结的相
-
热点聚焦:“铝行舱”的大力量!奇瑞小蚂蚁值得信赖这是一场疯狂至极的物理实验当7-8吨重量压在小蚂蚁(参数|询价)身上TA能扛得住吗?最近奇瑞小蚂蚁接受了多种
-
烤鱼的家常做法视频_烤鱼的家常做法 世界即时看1、导语:吃腻了重口味的烤鱼做法,是不是很想念它的家常做法,今天小编介绍几个它的家常做法大全给你们吧
-
千万不要领失业补助金怎么回事?领取失业金的条件是什么?-环球播报千万不要领失业补助金怎么回事?领取失业金的条件是什么?想最主要的原因还是怕妨碍了后续的工作和生活!其
-
「大国基理」快评:社区治理“小题”也可“大做”近日,“大国基理”网络主题宣传活动启动仪式在天津举行。天津站线下采访活动同步启动。中央重点新闻网站、
-
【世界聚看点】座砖1、座砖是砌在盛钢桶底部,固定水口砖的耐火质砖。2、其外形是方形,故又称方砖。3、座砖的作用是固定水口
-
通讯!赶飞机注意!天府机场公交专线有变赶飞机注意!天府机场公交专线有变
-
每日观点:中级会计一个月如何备考在只剩一个月的时间里备考中级会计职称,建议考生们每天把重点、易考知识点理清,多花时间刷真题,了解考试
-
英语直通车动画语法6_关于英语直通车动画语法6的简介1、《英语直通车动画语法6》是2006年5月外语教学与研究出版社出版的图书,作者是温世仁。本文关于英语直通
-
【天天时快讯】隆华科技(300263):关于为全资及控股下属公司提供综合授信担保的公告隆华科技(300263)(300263):关于为全资及控股下属公司提供综合授信担保的公告4月15日,隆华科技公告显示,
-
欧盟计划对俄罗斯实施第11轮制裁 全球报道欧盟委员会负责金融事务的委员玛丽德·麦吉尼斯13日接受美国媒体采访时表示,欧盟正在酝酿对俄罗斯实施第11
-
全球今日报丨华域汽车(600741):4月14日北向资金增持85.52万股4月14日北向资金增持85 52万股华域汽车。近5个交易日中,获北向资金减持的有2天,累计净减持36 89万股。近2
-
全球聚焦:分众传媒(002027):4月14日北向资金减持2575.28万股4月14日北向资金减持2575 28万股分众传媒。近5个交易日中,获北向资金增持的有2天,累计净增持5752 35万股
-
过期一天的食物不能吃?这些食品没保质期,别浪费!过期一天的食物还能吃吗?有传言说,食品只要过了保质期一天,哪怕外观没有任何变质的迹象,也不能吃了。食
-
独家视频丨习近平同巴西总统卢拉会谈:从战略高度引领和开辟新时代中巴关系新未来 天天热讯01:524月14日下午,国家主席习近平在人民大会堂同来华进行国事访问的巴西总统卢拉举行会谈。习近平欢迎卢拉
-
全球热点!刊号查询全国_刊号查询1、一,打开国家新闻出版广电总局官方网站,找不到的,可以直接百度搜这个名字。2、二,选择期刊查询,进入
-
今日热搜:解剖屎山,寻觅黄金之第二弹大家好,我3y啊。由于去重逻辑重构了几次,好多股东直呼看不懂,于是我今天再安排一波对代码的解析吧。aust
-
情趣是什么意思|全球热推荐1、情趣的意思:性情志趣。情调趣味。读音:qíngqù。2、英文:interest,appeal,delight。3、引证,志趣
-
热讯:面板厂商高薪挖掘AI人才:个别岗位月薪高达4万,行业回暖各家备货全球消费电子行情仍处低谷,TVLCD(电视液晶)面板行情却先行上扬。”4月9日,华南一家主要生产电视面板的
-
逾期20年不还会上征信吗网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后
-
北京市个人小客车指标查询-北京市小客车摇号时间|环球新动态1、北京市小客车摇号每月8日为购车指标申请截止日,每月26号上午10点多摇号,差不多在摇号后一小时就可以查询
-
环球快讯:送礼物给女生你好!送给女生礼物,为什么不能表达心意,她是什么想要的。你应该明白的,你要明白,这就是她的心意,不要
-
豪华的新高地开发项目通过时尚的设施附近的公园等提升公寓生活住宅房地产领域的一家主要全国性公司正在高地繁华的东区搬迁。AltaSunsetHeights是高地最新的豪华住宅社区
-
今日精选:还在等待2023上海车展?不妨先看看这辆“新生代跨界车”随着Vanlife文化的火爆出圈,轻客车型市场的热度也在逐渐攀升。越来越多新生代消费者都希望能选择一个兼具
-
助学贷款为什么不要轻易去借?原因其实很简单_每日讯息随着高校学费的不断上涨,助学贷款成为了越来越多学生的选择。然而,在考虑借助学贷款时,我们需要认真权衡
-
当前快讯:五部门联合官宣!数字经济“下乡”,这些领域机会一定不要错过据中国网信网消息,近日,五部门联合印发《2023年数字乡村发展工作要点》(以下简称《工作要点》)。《工作
-
世界观天下!俞灏明前女友日前俞灏明被曝在受伤后惨遭前女友抛弃,随后又有网友爆出俞灏明前女友乃是杨幂。对网上热炒的两人昔日恋情
-
天津两村入选2022年“一村一品”示范村镇-环球短讯天津北方网讯:近日,农业农村部认定395个村镇为第十二批全国一村一品示范村镇,推介199个镇为2022年全国乡
-
保险销售和理赔纠纷高发服装质量和售后问题频出服装鞋帽类是消费者生活必需品,投诉量一直占据靠前位置,服装投诉主要涉及质量与售
-
国内演出市场迎来爆发式增长 这些公司有望获关注|精选据媒体报道,春节后,国内演出市场迎来爆发式增长。演唱会排队官宣、音乐节扎堆儿开票等盛况屡屡上演,现场