golang的time包
程序员文章站
2023-01-01 15:06:52
Time对象转换为string和时间戳调用Time对象的方法 转换为string:Time.Format(输出的格式) 转换为时间戳 :Time.Unix() 两者转换为Time对象的时候调用的是time包的方法 string转换:time.Parse("输出格式",string字符串) 时间戳对象 ......
- time对象转换为string和时间戳调用time对象的方法
- 转换为string:time.format(输出的格式)
- 转换为时间戳 :time.unix()
- 两者转换为time对象的时候调用的是time包的方法
- string转换:time.parse("输出格式",string字符串)
- 时间戳对象转换:time.unix(秒,纳秒)
-
go1.9之前, time.time的定义为
type time struct { sec int64 nsec int32 loc *location } //sec表示从公元1年1月1日00:00:00utc到要表示的整数秒数, //nsec表示余下的纳秒数, 它必须在[0,999999999]范围内。 //loc表示时区. sec和nsec处理没有歧义的时间值, loc处理偏移量.
package main import ( "github.com/golang/glog" "time" "fmt" ) func main() { fmt.println(time.now().adddate(0,0,100).unix()) // 获取当前时间,返回time.time对象 fmt.println(time.now()) /* 输出:2019-06-12 22:21:37.7036 +0800 cst m=+0.000255350 其中cst可视为美国,澳大利亚,古巴或中国的标准时间 +0800表示比utc时间快8个小时 */ // 获取当前时间戳,单位是秒 fmt.println(time.now().unix()) // 精确到纳秒,通过纳秒就可以计算出毫秒和微妙 fmt.println(time.now().unixnano()) //fmt.println(time.now().adddate(0,0,30).unix()) // 获取当前时间,进行格式化 /* 月份 1,01,jan,january 日 2,02,_2 时 3,03,15,pm,pm,am,am 分 4,04 秒 5,05 年 06,2006 周几 mon,monday 时区时差表示 -07,-0700,z0700,z07:00,-07:00,mst 时区字母缩写 mst */ fmt.println("=============月份===========") fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("2006-1-02 15:04:05")) fmt.println(time.now().format("2006-jan-02 15:04:05")) fmt.println(time.now().format("2006-january-02 15:04:05")) fmt.println("==================日期==============") fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("2006-01-2 15:04:05")) fmt.println(time.now().format("2006-01-_2 15:04:05")) fmt.println("==================小时==============") fmt.println(time.now().format("2006-01-02 3:04:05")) fmt.println(time.now().format("2006-01-02 03:04:05")) fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("2006-01-02 3:04:05 pm")) fmt.println(time.now().format("2006-01-02 3:04:05 pm")) fmt.println(time.now().format("2006-01-02 15:04:05 am")) fmt.println(time.now().format("2006-01-02 15:04:05 am")) fmt.println("==================分==============") fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("2006-01-02 15:4:05")) fmt.println("==================秒==============") fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("2006-01-02 15:4:5")) fmt.println("==================年==============") fmt.println(time.now().format("2006-01-02 15:04:05")) fmt.println(time.now().format("06-01-02 15:04:05")) fmt.println(time.now().format("02/01/2006 15:04:05 pm")) //第一个参数是时间戳的秒,第二个参数是时间戳的纳秒 fmt.println(time.unix(1560350574,999748000).format("2006-01-02 15:04:05")) //2019-06-12 22:42:54 // 获取指定时间戳的年月日,小时分钟秒 t:= time.unix(1560350574,999748000) fmt.printf("%d-%d-%d %d:%d:%d\n", t.year(), t.month(), t.day(), t.hour(), t.minute(), t.second()) //时间字符串转换为时间戳 // 先用time.parse对时间字符串进行分析,如果正确会得到一个time.time对象 t,err := time.parse("2006-01-02 15:04:05","2019-06-12 22:47:29") if err!= nil { glog.error(err) } fmt.println(t) // 后面就可以用time.time对象的函数unix进行获取 fmt.println(t.unix()) //总结:string转换为time对象,time对象拥有很多函数 fmt.println("=====时间戳转化为一天开始的时候的时间戳===============") //根据时间戳获取当日开始的时候的时间戳 // 方法就是通过时间戳取到2016-01-01 00:00:00这样的时间格式 // 然后再转成时间戳就ok了 // 获取月开始时间和年开始时间类似 fmt.println("==时间戳用time.unix方法转换为time对象,time对象通过format函数返回指定格式的string===") time1 := time.unix(1560350574,999748000).format("2006-01-02") fmt.println(time1) fmt.println("====string想要转换为时间戳,需要先用time.parse对时间字符串进行分析,如果正确会得到一个time.time对象=======") t,err = time.parse("2006-01-02",time1) if err!= nil { glog.error(err) } fmt.println(t) fmt.println("===========后面就可以用time.time对象的函数unix进行获取=======") fmt.println(t.unix()) //获取这个月开始的那一天的日期 time1 = time.unix(1560350574,999748000).format("2006-01") fmt.println(time1) t,err = time.parse("2006-01",time1) if err!= nil { glog.error(err) } fmt.println(t) fmt.println(t.unix()) //获取今年开始的那个日期 time1 = time.unix(1560350574,999748000).format("2006") fmt.println(time1) t,err = time.parse("2006",time1) if err!= nil { glog.error(err) } fmt.println(t) fmt.println(t.unix()) // 休眠1秒 // time.millisecond 表示1毫秒 // time.microsecond 表示1微妙 // time.nanosecond 表示1纳秒 time.sleep(1 * time.second) // 休眠100毫秒 time.sleep(100 * time.millisecond) /* 获取某一时区的现在时间-time.now().in(), time结构体的in()方法仅设置loc, 不会改变时间值. 特别地, 如果是获取现在的utc时间, 可以使用time.now().utc(). */ } // 获取月初时间 func getearlymonthunix()int64 { now := time.now() tm :=time.date(now.year(),now.month(),0,0,0,0,0,now.location()) fmt.println(tm.unix()) return tm.unix() } // 获取零时时间 func getzerohourunix() int64 { now := time.now() tm := time.date(now.year(), now.month(), now.day(), 0, 0, 0, 0, now.location()) return tm.unix() } // 获取当前小时时间 func getnowhourunix() int64 { now := time.now() tm := time.date(now.year(), now.month(), now.day(), now.hour(), 0, 0, 0, now.location()) return tm.unix() } // 获取年初时间 func getearlyyearunix() int64 { now := time.now() tm := time.date(now.year(), 1, 1, 0, 0, 0, 0, now.location()) return tm.unix() }
上一篇: Kubernetes
推荐阅读
-
分享一道关于闭包、bind和this的面试题
-
WinForm调用jar包的方法分析
-
Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法
-
在SQL Server中使用命令调用SSIS包的具体方法
-
maven下载jar包改用阿里云maven库的方法
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
如何制作windows服务安装包? 服务安装包的制作过程
-
制作PHP的RPM包详解及实例
-
解决linux下大量TIME WAIT的方法详解
-
关于package.json中npm依赖包版本前的符号含义解析