当前位置:网站首页>golang's time package: methods for time interval formatting and output of timestamp formats such as seconds, milliseconds, and nanoseconds
golang's time package: methods for time interval formatting and output of timestamp formats such as seconds, milliseconds, and nanoseconds
2022-08-02 06:12:00 【m0_67394006】
获取当前时间的年、月、日、时、分、The method of seconds is as follows:
// 获取当前时间
now := time.Now()
// 当前时间的年、月、日、小时、分钟、Both seconds and nanoseconds can be obtained directly through the existing interface
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
// The microseconds and milliseconds of the current time are generated by nanosecond calculations
microsecond := nanosecond / 1e3
millisecond := nanosecond / 1e6
fmt.Println(now.Format("2006-01-02 15:04:05.000000000"))
fmt.Println(year, month, day, hour, minute, second, nanosecond, microsecond, millisecond)
运行结果如下:
# 当前时间格式输出
2022-06-09 19:25:52.022598620
2022 June 9 19 25 52 22598620 22598 22
获取从1970The method of the elapsed time up to now is as follows:
// 获取从1970经过的时间,Both seconds and nanoseconds can be obtained directly through the existing interface
sec := now.Unix() // Timestamp bits are 10
ms := now.UnixMilli() // Timestamp bits are 13
us := now.UnixMicro() // Timestamp bits are 16
ns := now.UnixNano() // Timestamp bits are 19
fmt.Printf("sec:%v
ms:%v
us:%v
ns:%v
", sec, ms, us, ns)
运行结果如下:
# 1970Elapsed time format output
sec:1654773952
ms:1654773952022
us:1654773952022598
ns:1654773952022598620
Time interval formatted output method:
// The time interval returns yestime.Duration,下面以1h1m1s1ms1us1nsexample of time intervals,Test the printing effect of various formats
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
", duration)
fmt.Printf("duration:%6v
", duration)
fmt.Printf("duration:%.6v
", duration)
fmt.Printf("duration:%.3v
", duration)
// duration支持Hours()、 Minutes()、Seconds() 和
// Milliseconds()、Microseconds()、Nanoseconds()接口
// The first three interface return types are float64可以通过0.3fPrint the number after the decimal point,
// 后三个为int64,是整数,小数点后都是0
// The following lists the format printing of seconds and milliseconds,Other time units can refer to seconds and milliseconds
// Print format for seconds%fAfter the decimal point can be printed9位,精确到纳秒
fmt.Printf("duration:%vsec
", duration.Seconds())
fmt.Printf("duration:%0.3fsec
", duration.Seconds())
fmt.Printf("duration:%0.6fsec
", duration.Seconds())
// Milliseconds have no decimal point,都是整数,转换成float后,小数点后都是0
fmt.Printf("duration:%vms
", duration.Milliseconds())
fmt.Printf("duration:%.3dms
", duration.Milliseconds())
fmt.Printf("duration:%.3fms
", float64(duration.Milliseconds()))
}
行结果如下:
# 1h1m1s1ms1us1nsThe time interval example format output
# %vTime output without unit conversion
duration:1h1m1.001001001s
duration:1h1m1.001001001s
duration:1h1m1.
duration:1h1
# 秒的格式输出
duration:3661.001001001sec
duration:3661.001sec
duration:3661.001001sec
# Millisecond format output
duration:3661001ms
duration:3661001ms
duration:3661001.000ms
It can be seen through the test program:
1.Format output without time unit conversion,直接用%v能精确到ns,%.3V,Just cut the output string.Direct use is recommended here%v即可.
2.For second format output,%v精确到小数点9位,即纳秒.当然可以根据%fformat adjustment,例如%.3f精确到毫秒
3.For millisecond format output,直接用%v或%d即可,转换成float64没有意义
It is generally used to count how long a function or a program has been running,一般建议使用第二种方式,Convert output in seconds format,Then adjust according to the accuracy%f的格式即可.
In the first way, the time unit may not be uniform,For example one is minutes,一个是秒.
The completed code for the above example is as follows:
package main
import (
"fmt"
"time"
)
func main() {
// 获取当前时间
now := time.Now()
// 当前时间的年、月、日、小时、分钟、Both seconds and nanoseconds can be obtained directly through the existing interface
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
// The microseconds and milliseconds of the current time are generated by nanosecond calculations
microsecond := nanosecond / 1e3
millisecond := nanosecond / 1e6
fmt.Println(now.Format("2006-01-02 15:04:05.000000000"))
fmt.Println(year, month, day, hour, minute, second, nanosecond, microsecond, millisecond)
// 获取从1970经过的时间,Both seconds and nanoseconds can be obtained directly through the existing interface
sec := now.Unix() // Timestamp bits are 10
ms := now.UnixMilli() // Timestamp bits are 13
us := now.UnixMicro() // Timestamp bits are 16
ns := now.UnixNano() // Timestamp bits are 19
fmt.Printf("sec:%v
ms:%v
us:%v
ns:%v
", sec, ms, us, ns)
// The time interval returns yestime.Duration,下面以1h1m1s1ms1us1nsexample of time intervals,Test the printing effect of various formats
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
", duration)
fmt.Printf("duration:%6v
", duration)
fmt.Printf("duration:%.6v
", duration)
fmt.Printf("duration:%.3v
", duration)
// duration支持Hours()、 Minutes()、Seconds() 和
// Milliseconds()、Microseconds()、Nanoseconds()接口
// The first three interface return types are float64可以通过0.3fPrint the number after the decimal point,
// 后三个为int64,是整数,小数点后都是0
// The following lists the format printing of seconds and milliseconds,Other time units can refer to seconds and milliseconds
// Print format for seconds%fAfter the decimal point can be printed9位,精确到纳秒
fmt.Printf("duration:%vsec
", duration.Seconds())
fmt.Printf("duration:%0.3fsec
", duration.Seconds())
fmt.Printf("duration:%0.6fsec
", duration.Seconds())
// Milliseconds have no decimal point,都是整数,转换成float后,小数点后都是0
fmt.Printf("duration:%vms
", duration.Milliseconds())
fmt.Printf("duration:%.3dms
", duration.Milliseconds())
fmt.Printf("duration:%.3fms
", float64(duration.Milliseconds()))
}
Below is the source code for time unit conversion for time intervals:
// time.go
// Nanoseconds returns the duration as an integer nanosecond count.
func (d Duration) Nanoseconds() int64 { return int64(d) }
// Microseconds returns the duration as an integer microsecond count.
func (d Duration) Microseconds() int64 { return int64(d) / 1e3 }
// Milliseconds returns the duration as an integer millisecond count.
func (d Duration) Milliseconds() int64 { return int64(d) / 1e6 }
// These methods return float64 because the dominant
// use case is for printing a floating point number like 1.5s, and
// a truncation to integer would make them not useful in those cases.
// Splitting the integer and fraction ourselves guarantees that
// converting the returned float64 to an integer rounds the same
// way that a pure integer conversion would have, even in cases
// where, say, float64(d.Nanoseconds())/1e9 would have rounded
// differently.
// Seconds returns the duration as a floating point number of seconds.
func (d Duration) Seconds() float64 {
sec := d / Second
nsec := d % Second
return float64(sec) + float64(nsec)/1e9
}
// Minutes returns the duration as a floating point number of minutes.
func (d Duration) Minutes() float64 {
min := d / Minute
nsec := d % Minute
return float64(min) + float64(nsec)/(60*1e9)
}
// Hours returns the duration as a floating point number of hours.
func (d Duration) Hours() float64 {
hour := d / Hour
nsec := d % Hour
return float64(hour) + float64(nsec)/(60*60*1e9)
}
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在.深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小.自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前.因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担.添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢

navicat新建数据库

Detailed explanation of AMQP protocol

MySQL 字符串拼接 - 多种字符串拼接实战案例

Detailed explanation of mysql stored procedure

Google Chrome(谷歌浏览器)安装使用

UE4 3DUI显示与交互案例

Android studio connects to MySQL and completes simple login and registration functions

CAN光端机解决泰和安TX3016C消防主机长距离联网问题 实现CAN与光纤之间的双向数据智能转换

go语言中的goroutine(协程)

MySQL 灵魂 16 问,你能撑到第几问?
随机推荐
公司不重视软件测试,新来的阿里P8给我们撰写了测试用例编写规范
MobaXsterm如何使用
2022河南萌新联赛第(四)场:郑州轻工业大学 C - 最大公因数
MySQL如何创建用户
Introduction and use of apifox (1).
认识消防报警联网中CAN光纤转换器的光纤接口和配套光纤线缆
UE4 创建暂停和结束游戏UI
Go语言中定时任务库Cron使用详解
MES系统物料管理的五大功能,建议收藏
What do interview test engineers usually ask?The test supervisor tells you
navicat无法连接mysql超详细处理方法
[网鼎杯 2020 青龙组]singal
MySQL安装教程
腾讯注册中心演进及性能优化实践
分享|5G+智慧工业园区解决方案(附PDF)
IOT物联网概述及应用层架构入门篇
MySQL 8.0.29 decompressed version installation tutorial (valid for personal testing)
本周大新闻|苹果MR已进行Pre-EVT测试,Quest 2涨价100美元
Jmeter使用多线程测试web接口
The original question on the two sides of the automatic test of the byte beating (arranged according to the recording) is real and effective 26