golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例_第1頁
golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例_第2頁
golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例_第3頁
golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例_第4頁
golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第golang中time包之時間間隔格式化和秒、毫秒、納秒等時間戳格式輸出的方法實例目錄獲取當前時間的年、月、日、時、分、秒的方法如下:獲取從1970到現(xiàn)在經(jīng)過的時間的方法如下:時間間隔格式化輸出方法:總結

獲取當前時間的年、月、日、時、分、秒的方法如下:

//獲取當前時間

now:=time.Now()

//當前時間的年、月、日、小時、分鐘、秒和納秒都可以通過現(xiàn)有接口直接獲取

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到現(xiàn)在經(jīng)過的時間的方法如下:

//獲取從1970經(jīng)過的時間,秒和納秒都可以通過現(xiàn)有接口直接獲取

sec:=now.Unix()//時間戳位數(shù)為10

ms:=now.UnixMilli()//時間戳位數(shù)為13

us:=now.UnixMicro()//時間戳位數(shù)為16

ns:=now.UnixNano()//時間戳位數(shù)為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打印,不轉(zhuǎn)換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打印小數(shù)點后的數(shù),

//后三個為int64,是整數(shù),小數(shù)點后都是0

//下面列舉秒和毫秒的格式打印,其他時間單位可以參考秒和毫秒

//秒的打印格式%f可以打印小數(shù)點后9位,精確到納秒

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

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

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

//毫秒沒有小數(shù)點,都是整數(shù),轉(zhuǎn)換成float后,小數(shù)點后都是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.沒時間單位轉(zhuǎn)換的格式輸出,直接用%v能精確到ns,%.3V,只是對輸出的字符串進行了切割。此處建議直接用%v即可。

2.對于秒的格式輸出,%v精確到小數(shù)點9位,即納秒。當然可以根據(jù)%f的格式調(diào)整,例如%.3f精確到毫秒

3.對于毫秒的格式輸出,直接用%v或%d即可,轉(zhuǎn)換成float64沒有意義

一般在統(tǒng)計一個函數(shù)或一段程序運行了多長時間,一般建議使用第二種方式,轉(zhuǎn)換成秒的格式輸出,再根據(jù)精度調(diào)整%f的格式即可。

第一種方式有可能出現(xiàn)時間單位不統(tǒng)一,例如一個是分鐘,一個是秒。

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

packagemain

import(

"fmt"

"time"

funcmain(){

//獲取當前時間

now:=time.Now()

//當前時間的年、月、日、小時、分鐘、秒和納秒都可以通過現(xiàn)有接口直接獲取

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經(jīng)過的時間,秒和納秒都可以通過現(xiàn)有接口直接獲取

sec:=now.Unix()//時間戳位數(shù)為10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論