golang time模块相关
在很多种语言中都有和时间相关的模块,在python和golang中内置的模块名称都是叫time模块,只不过用法略有区别,如在python下打印当前时间是time.time,在golang下则使用的time.now(两者的输出也略有区别的,前者输的是unix time,后者输出的是常用识别的日期时间)。golang里不过还有一点比较特殊的就是其是以2006-01-02 15:04:05时间点作为基准的(简称612345或12345 2006),这点就类似于unix时间戳是以1970年1月1日为开始经历过的秒数一样。本篇就简单的总结下常用的time模块的用法。
一、time的常用示例
打印当前时间戳
1fmt.Println(time.Now().Unix())
2# 1389058332
str格式化时间
1fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5
2# 2018-08-25 09:42:20
时间戳转str格式化时间
1str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05")
2fmt.Println(str_time)
str格式化时间转时间戳
1the_time := time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local)
2unix_time := the_time.Unix()
3fmt.Println(unix_time)
4# 1389045004
time.Parse格式化时间
1the_time, err := time.Parse("2006-01-02 15:04:05", "2014-01-08 09:04:41")
2if err == nil {
3 unix_time := the_time.Unix()
4 fmt.Println(unix_time)
5}
6# 1389171881
二、time.Parse和time.Format的区别
在windows下,time.Parse()的时区和time.Format()的时区是一致的。但是在linux环境下,time.Parse()的默认时区是UTC(与我们使用的标准时间CST相差8个小时),time.Format()的时区默认是本地,两者如果不处理好就会导致错误。具体可以做如下一个操作,找一台linux主机,将其/etc/localtime由Shanghai更换为UTC,然后分别执行如下代码,看下输出的区别:
1package main
2import "time"
3import "fmt"
4func main(){
5 t, err := time.Parse("2006-01-02 15:04:05", "2017-12-03 22:01:02")
6 //localTime, err := time.ParseInLocation("2006-01-02 15:04:05", "2017-12-03 22:01:02", time.Local)
7 if err != nil{
8 fmt.Println(err)
9 return
10 }
11 fmt.Println(t)
12 fmt.Println(time.Now())
13 fmt.Println(time.Now().Sub(t).Seconds())
14}
分别使用time.Parse和time.ParseInLocation分别算下两个时间之间的差值,看下哪一个求出的值是正确的?
三、再一个示例
最后再给出一个输出当前时间年、月、日、时等不同信息的示例代码,如下:
1package main
2import(
3 "fmt"
4 "time"
5)
6func main(){
7 t := time.Now()
8 y,m,d := t.Date()
9 today := time.Now().Format("2006-01-02")
10 datetime := time.Now().Format("2006-01-02 15:04:05")//后面的参数是固定的 否则将无法正常输出
11 fmt.Println("time is : ",t )
12 fmt.Println("y m d is : ",y,m,d )
13 fmt.Println("now is :",today)
14 fmt.Println("now is :",datetime)
15}
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/golang-time/5840.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.