golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例_第1页
golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例_第2页
golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例_第3页
golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例_第4页
golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例目录获取当前时间的年、月、日、时、分、秒的方法如下:获取从1970到现在经过的时间的方法如下:时间间隔格式化输出方法:总结

获取当前时间的年、月、日、时、分、秒的方法如下:

//获取当前时间

now:=time.Now()

//当前时间的年、月、日、小时、分钟、秒和纳秒都可以通过现有接口直接获取

year:=now.Year()

month:=now.Month()

day:=now.Day()

hour:=now.Hour()

minute:=now.Minute()

second:=now.Second()

nanosecond:=now.Nanosecond()

//当前时间的微秒和毫秒是通过纳秒计算生成

microsecond:=nanosecond/1e3

millisecond:=nanosecond/1e6

fmt.Println(now.Format("2006-01-0215:04:05.000000000"))

fmt.Println(year,month,day,hour,minute,second,nanosecond,microsecond,millisecond)

运行结果如下:

2025-06-0919:25:52.022598620

2025June9192552225986202259822

获取从1970到现在经过的时间的方法如下:

//获取从1970经过的时间,秒和纳秒都可以通过现有接口直接获取

sec:=now.Unix()//时间戳位数为10

ms:=now.UnixMilli()//时间戳位数为13

us:=now.UnixMicro()//时间戳位数为16

ns:=now.UnixNano()//时间戳位数为19

fmt.Printf("sec:%v\nms:%v\nus:%v\nns:%v\n",sec,ms,us,ns)

运行结果如下:

sec:1654773952

ms:1654773952025

us:1654773952025598

ns:1654773952025598620

时间间隔格式化输出方法:

//时间间隔返回的是time.Duration,下面以1h1m1s1ms1us1ns的时间间隔举例,测试各种格式的打印效果

duration:=1*time.Hour+1*time.Minute+1*time.Second+

1*time.Millisecond+1*time.Microsecond+1*time.Nanosecond

//直接使用%v打印,不转换sec、ms或其他。

fmt.Printf("duration:%v\n",duration)

fmt.Printf("duration:%6v\n",duration)

fmt.Printf("duration:%.6v\n",duration)

fmt.Printf("duration:%.3v\n",duration)

//duration支持Hours()、Minutes()、Seconds()和

//Milliseconds()、Microseconds()、Nanoseconds()接口

//前三个接口返回类型为float64可以通过0.3f打印小数点后的数,

//后三个为int64,是整数,小数点后都是0

//下面列举秒和毫秒的格式打印,其他时间单位可以参考秒和毫秒

//秒的打印格式%f可以打印小数点后9位,精确到纳秒

fmt.Printf("duration:%vsec\n",duration.Seconds())

fmt.Printf("duration:%0.3fsec\n",duration.Seconds())

fmt.Printf("duration:%0.6fsec\n",duration.Seconds())

//毫秒没有小数点,都是整数,转换成float后,小数点后都是0

fmt.Printf("duration:%vms\n",duration.Milliseconds())

fmt.Printf("duration:%.3dms\n",duration.Milliseconds())

fmt.Printf("duration:%.3fms\n",float64(duration.Milliseconds()))

}

行结果如下:

duration:1h1m1.001001001s

duration:1h1m1.001001001s

duration:1h1m1.

duration:1h1

duration:3661.001001001sec

duration:3661.001sec

duration:3661.001001sec

duration:3661001ms

duration:3661001ms

duration:3661001.000ms

通过测试程序可以看到:

1.没时间单位转换的格式输出,直接用%v能精确到ns,%.3V,只是对输出的字符串进行了切割。此处建议直接用%v即可。

2.对于秒的格式输出,%v精确到小数点9位,即纳秒。当然可以根据%f的格式调整,例如%.3f精确到毫秒

3.对于毫秒的格式输出,直接用%v或%d即可,转换成float64没有意义

一般在统计一个函数或一段程序运行了多长时间,一般建议使用第二种方式,转换成秒的格式输出,再根据精度调整%f的格式即可。

第一种方式有可能出现时间单位不统一,例如一个是分钟,一个是秒。

上面例子完成的代码如下:

packagemain

import(

"fmt"

"time"

funcmain(){

//获取当前时间

now:=time.Now()

//当前时间的年、月、日、小时、分钟、秒和纳秒都可以通过现有接口直接获取

year:=now.Year()

month:=now.Month()

day:=now.Day()

hour:=now.Hour()

minute:=now.Minute()

second:=now.Second()

nanosecond:=now.Nanosecond()

//当前时间的微秒和毫秒是通过纳秒计算生成

microsecond:=nanosecond/1e3

millisecond:=nanosecond/1e6

fmt.Println(now.Format("2006-01-0215:04:05.000000000"))

fmt.Println(year,month,day,hour,minute,second,nanosecond,microsecond,millisecond)

//获取从1970经过的时间,秒和纳秒都可以通过现有接口直接获取

sec:=now.Unix()//时间戳位数为10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论