月份怎么记,大月小月的由来,Go语言中的日期函数

极简大道 极简大道 2023-09-28 记忆方法 阅读: 101
摘要: 时间和日期是我们编程中经常会用到的,在Go语言中time包提供了时间显示

时间和日期是我们编程中经常会用到的,在Go语言中time包提供了时间显示测量等所用的函数。

时间的获取

获取当前时间

通过 time.Now() 函数来获取 当前的时间对象 ,然后通过时间对象来获取当前的时间信息。

示例:

now := time.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)
2023 May 27 17 27 29

获取年月日时分秒

获取时间戳

时间戳是自 1970 年 1 月 1 日(08:00:00GMT)至当前时间的总毫秒数,它也被称为 Unix 时间戳(UnixTimestamp)

now := time.Now()// 时间戳unix := now.Unix()// 纳秒时间戳nano := now.UnixNano()
fmt.Println(unix, nano)

时间戳转化换时间对象

利用time.Unix可以把时间戳转换为时间对象

now := time.Now()// 时间戳unix := now.Unix()// 时间戳转换为时间对象t := time.Unix(unix, 0)
fmt.Println(t)

获取星期时间

now := time.Now()
s := now.Weekday().String()
fmt.Println(s)

时间操作函数

Add

某个时间 + 时间间隔

语法:

func (t Time) Add(d Duration) Time

示例:

now := time.Now()
r := now.Add(time.Hour)
fmt.Println(r)

获取当前时间加1小时后的时间

Sub

求两个时间之间的差值

语法:

func (t Time) Sub(u Time) Duration

示例:

now := time.Now()
r := now.Add(time.Hour * 12)// 两个时间的差值d := r.Sub(now)
fmt.Println(d)

Equal

判断两个时间是否相同

语法:

func (t Time) Equal(u Time) bool

解释:

Equal 函数会考虑时区的影响,因此不同时区标准的时间也可以正确比较,Equal 方法和用 t==u 不同,Equal 方法还会比较地点和时区信息

Before

判断一个时间点是否在另一个时间点之前

语法:

func (t Time) Before(u Time) bool

解释:

如果 t 代表的时间点在 u 之前,则返回真,否则返回假。

After

判断一个时间点是否在另一个时间点之后

func (t Time) After(u Time) bool

解释:

如果 t 代表的时间点在 u 之后,则返回真,否则返回假。

定时器

NewTimer

time 包里的 NewTimer() 函数用于创建一次性计时器

语法:

func NewTimer(d Duration) *Timer

示例:

timer := time.NewTimer(5 * time.Second)// 得到定时后的系统时间<-timer.C

fmt.Println("定时结束...")

NewTicker

time 包里的NewTicker()函数用于创建周期性的计时器,它每隔指定时间都会触发一次

语法:

func NewTicker(d Duration) *Timer

示例:

// ticker只要定义完成,从此刻开始计时,不需要任何其他的操作,每隔固定时间都会触发(周期性计时器)。t := time.NewTicker(time.Second * 2)defer t.Stop()
tag := 0for {
    tag++    if tag == 10 {        break
    }
    <-t.C  // 每隔两秒都会接受一次NewTicker发来的时间
    fmt.Println("Ticker running...")
}

Tick

time.Tick是对 time.NewTicker的封装。

语法:

func Tick(d Duration) *Timer

示例:

ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器,Tick是周期定时器tag := 0for i := range ticker { //遍历定时器 ticker
    tag++
    fmt.Println(i) //每秒都会执行的任务    if tag == 10 {        break
    }
}

Reset

Timer 是一次性计时器,Ticker 是周期性计时器。可以用 Timer + Reset 实现周期性计时器。

语法:

func (t *Timer) Reset(d Duration) bool

Sleep

for+time.Sleep实现定时器功能

for true {    time.Sleep(time.Second * 2)
    fmt.Println("2s执行一次")
}

时间格式化

Format

时间类型有一个自带的 Format方法 进行格式化。需要注意的是Go语言中格式化时间模板不是常见的 Y-m-d H:M:S。而是使用Go的诞生时间 2006年1月2日 15点04分 (记忆口诀:2006 1 2 3 4 5)

示例:

now := time.Now()// 12小时制fmt.Println(now.Format("2006-01-02 03:04:05"))// 24小时制fmt.Println(now.Format("2006-01-02 15:04:05"))
2023-05-29 10:55:302023-05-29 10:55:30

日期字符串转换成时间戳

语法:

func ParseInLocation(layout, value string, loc *Location) (Time, error)

示例:

// 日期字符串转换成时间戳var timeStr2 = "2023-05-29 15:10:05"var tmp = "2006-01-02 15:04:05"timeObj, _ := time.ParseInLocation(tmp, timeStr2, time.Local)
fmt.Println(timeObj.Unix())

时间间隔

time.Duration是time包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单位。time.Duration表示一段时间间隔,可表示的最大长度段大约290年。

time包中定义的时间间隔类型的常量如下:





其他相关

过目不忘的记忆秘诀,超强记忆力数字密码的训练图,金记忆: 学习一种记电话号码方法,听一遍就记住,不要纸和笔抄写

作者: 极简大道 时间:2024-02-12 阅读: 48
大家好,我是金记忆,昨天对记忆人名的方法进行了分享和总结,相信也会对你又说启发,人名有时候真的不好记忆,但是记忆人名又是人际交往和沟通的必备技能,真的很重要。有没有?那今天我们来解读电话号码的记忆,这个也很重要,当我们向同学、同事问及某个人的电话号码时,你是不是需要马上找纸和笔准备记下来呢?当你学习了怎样记忆电话号码之后,这个就不需要了,你就可以轻松的让对方说一遍马上记住了。那下面我们就看是学习吧!你期待吗?...

高效记忆,过目不忘的记忆秘诀,免费学记忆力—15 倒数第6篇,电话号码记不住,电话记忆法来帮你

作者: 极简大道 时间:2024-02-12 阅读: 42
打电话是我们维持关系,了解家人,亲人,朋友情况的重要途径之一。即使现在科技发达,不用我们劳心费力的去记,只需要把号码存在手机即可。但是如果发生了意外,我们的手机掉了,被不法分子捡到,他利用你手机经行诈骗,你却由于没有记忆重要的电话提醒亲人朋友,无法提醒他们感到后悔呢?...

快速记忆110个数字编码图,高效记忆,打电话时不用再找纸和笔,也能快速记下电话号码和事情,很实用

作者: 极简大道 时间:2024-02-12 阅读: 49
朋友们,今天和大家分享一个小技巧,相信你一定用得到。就是我们平时在打电话的时候,对方说你记一下我的电话号码,这时候很多朋友会说“嗯、你稍等一下,我找纸和笔记一下”,然后把手机放下,满屋子找纸和笔来记这个事情。其实咱们大可不必这么麻烦,因为在打电话的时候,手机上就有这个功能,可以快速地让我们记录一些重要事情,也就不需要再找纸和笔了。...

如何快速提高记忆力,快速记忆110个数字编码图,手机号码短时间内容易记忆?这样记忆才最快

作者: 极简大道 时间:2024-02-12 阅读: 48
在生活中,你是否经常发现,在记忆一串陌生的手机号时,一开始总是非常容易,但是过了一阵子便想不起来了的现象?...

一分钟超强记忆法,背题的快速记忆技巧,还在为中考地理担心?快速记忆拿下来

作者: 极简大道 时间:2024-02-02 阅读: 44
中国地理概况。中国有14个陆地接壤的邻国,越南,老挝,缅甸,印度不,不丹,尼泊尔(珠穆朗玛峰),巴基斯坦,阿富汗塔吉克斯坦,吉尔吉斯坦,哈萨克斯坦(中亚五国乌兹别克斯坦与托尔曼斯坦与我国不接壤),俄罗斯,蒙古,朝鲜(与吉林省隔着鸭绿江)。隔海相望的国家有6个,韩国,日本,菲律宾,马来西亚,印度尼西亚,文莱。...
如何快速提高记忆力,三天五遍记忆法,#快速记忆

如何快速提高记忆力,三天五遍记忆法,#快速记忆

作者: 极简大道 时间:2024-02-02 阅读: 47
字母J。字母的J,其实看字母J大致能够看出个样子。J像早期古希腊人用的标枪,就是他们狩猎使用的主要的工具,就是他们手里那种带钩的利器。因为是钩子,又有了连接的意思,把东西勾住。J还有向上喷射的样子。先说J表示早期他们使用的标枪,表示扔出去的东西。单词job就是从字母的J标枪来的一种狩猎的刺枪,每次中一个猎物就算是完成一件任务。虽然古时候不是计件生产的,但是能刺中一件猎物,被视为完成了一件事情。所以job作为名词里有一件单位的意思。...

年度爆文