goalng——time包学习
1、星期:type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
(1)func (d Weekday) String() string
返回星期几的英文名。
2、月份:type Month int
const (
January Month = 1 + iota
February
March
April
May
June
July
August
September
October
November
December
)
(1)func (m Month) String() string
返回月份英文名。
3、时间点:type Time struct{...}
(1)Time代表一个纳秒精度的时间点。
(2)func Now() Time
返回当前本地时间。
(3)func (t Time) Equal(u Time) bool
判断两个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。
本方法和用t==u不同,这种方法还会比较地点和时区信息。
(4)func (t Time) Before(u Time) bool
如果t代表的时间点在u之前,返回真;否则返回假。
(5)func (t Time) After(u Time) bool
如果t代表的时间点在u之后,返回真;否则返回假。
(6)func (t Time) Date() (year int, month Month, day int)
返回时间点t对应的年、月、日。
(7)func (t Time) Clock() (hour, min, sec int)
返回t对应的那一天的时、分、秒。
(8)func (t Time) Year() int
返回时间点t对应的年份。
(9)func (t Time) Month() Month
返回时间点t对应那一年的第几月。
(10)func (t Time) Day() int
返回时间点t对应那一月的第几日。
(11)func (t Time) Hour() int
返回t对应的那一天的第几小时,范围[0, 23]。
(12)func (t Time) Minute() int
返回t对应的那一小时的第几分种,范围[0, 59]。
(13)func (t Time) Second() int
返回t对应的那一分钟的第几秒,范围[0, 59]。
(14)func (t Time) Nanosecond() int
返回t对应的那一秒内的纳秒偏移量,范围[0, 999999999]。
(15)func (t Time) YearDay() int
返回时间点t对应的那一年的第几天,平年的返回值范围[1,365],闰年[1,366]。
(16)func (t Time) Weekday() Weekday
返回时间点t对应的那一周的周几。
(17)func (t Time) Add(d Duration) Time
Add返回时间点t+d。
(18)func (t Time) AddDate(years int, months int, days int) Time
AddDate返回增加了给出的年份、月份和天数的时间点Time。
(19)func (t Time) Sub(u Time) Duration
返回一个时间段t-u。如果结果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。
要获取时间点t-d(d为Duration),可以使用t.Add(-d)。
(20)func (t Time) Format(layout string) string
Format根据layout指定的格式返回t代表的时间点的格式化文本表示。
(21)func (t Time) String() string
返回采用"2006-01-02 15:04:05.999999999 -0700 MST"格式字符串的格式化时间。
4、纳秒:type Duration int64
(1)两个时间点之间经过的时间,以纳秒为单位。
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)
(2)func ParseDuration(s string) (Duration, error)
ParseDuration解析一个时间段字符串。
一个时间段字符串是一个序列,每个片段包含可选的正负号、十进制数、可选的小数部分和单位后缀,如"300ms"、"-1.5h"、"2h45m"。
合法的单位有"ns"、"us" /"µs"、"ms"、"s"、"m"、"h"。
(3)func Since(t Time) Duration
Since返回从t到现在经过的时间,等价于time.Now().Sub(t)。
(4)func (d Duration) Hours() float64
Hours将时间段表示为float64类型的小时数。
(5)func (d Duration) Minutes() float64
Hours将时间段表示为float64类型的分钟数。
(6)func (d Duration) Seconds() float64
Hours将时间段表示为float64类型的秒数。
(7)func (d Duration) Nanoseconds() int64
Hours将时间段表示为int64类型的纳秒数,等价于int64(d)。
(8)func (d Duration) String() string
返回时间段采用"72h3m0.5s"格式的字符串表示。
package main import (
"fmt"
"time"
) func main() {
//时间操作
now := time.Now()
fmt.Println(now)
fmt.Println(now.Date())
fmt.Println(now.Clock())
fmt.Printf("%d/%d/%d %d:%d:%d\n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
fmt.Println(now.Format("2006/01/02 03:04:05"))
fmt.Println(now.Format("2006/01/02 15:04:05"))
newTime := now.Add(time.Hour)
fmt.Println(now.Format("2006/01/02 15:04:05"), newTime.Format("2006/01/02 15:04:05"))
dur := newTime.Sub(now)
fmt.Println(dur)
//输出
// 2019-06-15 22:16:39.6012388 +0800 CST m=+0.002032901
// 2019 June 15
// 22 16 39
// 2019/6/15 22:16:39
// 2019/06/15 10:16:39
// 2019/06/15 22:16:39
// 2019/06/15 22:16:39 2019/06/15 23:16:39
// 1h0m0s
}
5、定时器:type Timer struct{...}
(1)Timer类型代表单次时间事件。
当Timer到期时,当时的时间会被发送给C <-chan Time,除非Timer是被AfterFunc函数创建的。
(2)func NewTimer(d Duration) *Timer
NewTimer创建一个Timer,它会在最少过去时间段d后到期,向其自身的C字段发送当时的时间。
(3)func AfterFunc(d Duration, f func()) *Timer
AfterFunc另起一个go程等待时间段d过去,然后调用f。
它返回一个Timer,可以通过调用其Stop方法来取消等待和对f的调用。
(4)func (t *Timer) Reset(d Duration) bool
Reset使t重新开始计时,(本方法返回后再)等待时间段d过去后到期。
如果调用时t还在等待中会返回真;如果t已经到期或者被停止了会返回假。
(5)func (t *Timer) Stop() bool
Stop停止Timer的执行。
如果停止了t会返回真;如果t已经被停止或者过期了会返回假。
Stop不会关闭通道t.C,以避免从该通道的读取不正确的成功。
package main import (
"fmt"
"math/rand"
"time"
) func main() {
//1、定时器一秒后
t1 := time.Now()
timer := time.NewTimer(time.Second)
t2 := <-timer.C
dur := t2.Sub(t1)
fmt.Println(dur)
//2、定时器一秒后输出
time.AfterFunc(time.Second, func() {
fmt.Println("one second")
})
time.Sleep(time.Second * 2)
// 3、测试(运行结果根据随机数而定)
rand.Seed(time.Now().UnixNano())
timer = time.AfterFunc(time.Second, func() {
fmt.Println("do test")
})
for {
n := rand.Intn(3)
if n == 0 {
break
} else {
fmt.Println("Reset", n)
timer.Reset(time.Second * time.Duration(n))
}
}
time.Sleep(time.Second * 1)
fmt.Println(timer.Stop())
}
6、定时器:type Ticker struct{...}
(1)Ticker保管一个通道,并每隔一段时间向其传递"tick"。
(2)func NewTicker(d Duration) *Ticker
NewTicker返回一个新的Ticker,该Ticker包含一个通道字段,并会每隔时间段d就向该通道发送当时的时间。
它会调整时间间隔或者丢弃tick信息以适应反应慢的接收者。如果d<=0会panic。关闭该Ticker可以释放相关资源。
(3)func (t *Ticker) Stop()
Stop关闭一个Ticker。在关闭后,将不会发送更多的tick信息。
Stop不会关闭通道t.C,以避免从该通道的读取不正确的成功。
package main import (
"fmt"
"time"
) func main() {
timer := time.NewTimer(time.Second * 5)
ticker := time.NewTicker(time.Second * 1)
for {
select {
case <-timer.C:
fmt.Println("timer 执行一次结束")
case <-ticker.C:
fmt.Println("ticker 每隔一段时间执行一次")
}
}
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// timer 执行一次结束
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
// ticker 每隔一段时间执行一次
//...
}
7、其他
(1)func Sleep(d Duration)
Sleep阻塞当前go程至少d代表的时间段。d<=0时,Sleep会立刻返回。
(2)func After(d Duration) <-chan Time
After会在另一线程经过时间段d后向返回值发送当时的时间。等价于NewTimer(d).C。
(3)func Tick(d Duration) <-chan Time
Tick是NewTicker的封装,只提供对Ticker的通道的访问。如果不需要关闭Ticker,本函数就很方便。
goalng——time包学习的更多相关文章
- R语言爬虫初尝试-基于RVEST包学习
注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...
- java.util.concurrent包学习笔记(一)Executor框架
类图: 其实从类图我们能发现concurrent包(除去java.util.concurrent.atomic 和 java.util.concurrent.locks)中的内容并没有特别多,大概分为 ...
- sklearn包学习
1首先是sklearn的官网:http://scikit-learn.org/stable/ 在官网网址上可以看到很多的demo,下边这张是一张非常有用的流程图,在这个流程图中,可以根据数据集的特征, ...
- Go中sync包学习
前面刚讲到goroutine和channel,通过goroutine启动一个协程,通过channel的方式在多个goroutine中传递消息来保证并发安全.今天我们来学习sync包,这个包是Go提供的 ...
- pandas包学习笔记
目录 zip Importing & exporting data Plotting with pandas Visual exploratory data analysis 折线图 散点图 ...
- R parallel包学习笔记2
这个部分我在datacamp上面学习笔记,可视化的性能很差,使用的函数也很少. 可以参考一下大佬的博客园个人感觉他们讲的真的很详细 https://cosx.org/2016/09/r-and-par ...
- PHP的zip压缩工具扩展包学习
总算到了 PHP 的拿手好戏上场了,前面我们学习过 Bzip2 . LZF . Phar 和 rar 这些压缩相关扩展在 PHP 中的使用,不过它们要么是太冷门,要么就是很多功能不支持.而 Zip 则 ...
- Fiddler抓包学习
今天看到一个抓包笔记, 因为是老早抓包的需求, 后期不用就忘了, 换电脑桌面软件图标都没了, 点开看了一下一脸懵逼... 这是啥... 以后有需要在看一遍吧! Fiddler抓包使用教程-扫盲篇 h ...
- DBMS_OUTPUT包学习
DBMS_OUTPUT包中的其他方法和函数的用法,所以这次特地来研究一下. 先简单的讲解一下这个包的所有procedure的含义及作用: ----------------------- 1. ...
随机推荐
- Python接口测试之unittest框架(五)
Test-driven development(TDD)开发模式在今天已经不是什么新奇的事了,它的开发思维是在开发一个产品功能的时候,先 编写好该功能的测试代码,在编写开发比如,比如要写二个数相除的函 ...
- 開啟活動監視器 (SQL Server Management Studio)
本主題描述如何開啟 [活動監視器] 來取得有關 SQL Server 處理序以及這些處理序如何影響目前 SQL Server 執行個體的資訊. 此外,本主題也描述如何設定 [活動監視器] 的重新整理間 ...
- Parent and son
Give you a tree with N vertices and N‐ 1 edges, and then ask you Q queries on “which vertex is Y's s ...
- cogs——2084. Asm.Def的基本算法
2084. Asm.Def的基本算法 ★☆ 输入文件:asm_algo.in 输出文件:asm_algo.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] “有句 ...
- UIButton图片文字位置的四种情况
我们在做项目的过程中经常会遇到各定制UIButton 1.左边图片,右边文字 2.左边文字,右边图片 3.上边图片,下边文字 4.上边文字,下边图片 针对这四种情况 使用UIButton的catego ...
- MongoDB小结18 - find【查询条件$not】
not 是元条件句,可以用于任何条件之上,意为取反
- 一句话创建Jupyter For TensorFlow
docker run -v /home/jupyter_files:/home/jovyan/work -it -d --rm -p 10082:8888 jupyter/tensorflow-not ...
- js程序基础字符串具体
1. .charAt()里面写数字 在一般浏览器上相当于方括号 可是由于IE6的存在他就有了用处 由于IE6不兼容方括号 2. charCodeAt() 和charAt几乎相 ...
- vi,vim的基本使用方法
"i”插入 "/" 查找 "wq"保存退出 "q!"不保存退出
- java实现floyd统计天津地铁的网站距离
一:说明 (1)使用floyd实现各个网站的计算记录和路径 (2)网站获取和初始距离依据外部文件得到 (3)结果以外部文件的形式存储 (4)网站间转乘,觉得初始值也为1 (5)代码凝视比較具体,如有疑 ...