Jochen的golang小抄 高階篇 time包

2022-06-08 09:33:10 字數 2481 閱讀 3730

小抄系列高階篇涉及的概念較多,知識點重要,故每塊知識點獨立成篇,方便日後筆記的查詢

web開發經常需要展示時間,轉換時間,對於時間的使用是非常頻繁的。為此對於go語言中的時間操作這個技能樹務必給它加滿技能點!

本篇的主題是:time包

時間單位換算:

1年 = 365天

1天 = 24小時

1小時 = 60分鐘

1分鐘 = 60秒

1秒 = 1000毫秒

1毫秒 = 1000微秒

1微秒 = 1000納秒

1納秒 = 1000皮秒

time包常用操作彙總如下:

package main

import (

"fmt"

"math/rand"

"time"

)func main() else

//5.從時間物件去獲取對應的具體的某些時間資訊

獲取t1時間的年月日

year, month, day := t1.date()

fmt.printf("year:%t, month:%t, day:%t\n", year, month, day) //year:int, month:time.month, day:int

fmt.println(year, month, day) //2021 february 16

獲取時分秒

hour, min, sec := t1.clock()

fmt.printf("hour:%t, min:%t, sec:%t\n", hour, min, sec) //hour:int, min:int, sec:int

fmt.println(hour, min, sec) //3 54 37

單獨獲取個資料

t1.year() //獲取年

t1.month() //獲取月

t1.day() //獲取日

t1.hour() //獲取時

t1.minute() //獲取分

t1.second() //獲取秒

t1.nanosecond() //獲取納秒

t1.yearday() //獲取該年一共過了多少天

fmt.println(t1.weekday()) //tuesday 獲取為週幾

//時間戳:指定日期距離2023年1月1日0點0分0秒的時間差值,單位為秒或納秒

t1.unix() //獲取時間戳 單位/s

t1.unixnano() //獲取時間戳 單位/ns

//6.時間間隔

在原有時間的基礎上去增加或減少時間

fmt.println(t1) //2021-02-16 03:54:37.561962676 +0800 cst m=+0.000074931

//t4 := t1.add(time.hour * 24) //表示在該時間上加上一天

t4 := t1.add(time.minute * 20) //表示在該時間上加上20分鐘

//t4 := t1.add(time.second * 20) //表示在該時間上加上20秒

//t4 := t1.add(time.nanosecond * 20) //表示在該時間上加上20納秒

fmt.println(t4) //2021-02-16 04:14:37.561962676 +0800 cst m=+0.000074931

t5 := t1.adddate(1, 0, 0) //按日期去新增,引數分別是年月日

fmt.println(t5) //t1基礎上增加一年的時間

兩個時間的差值

d := t5.sub(t1)

fmt.println(d) //8760h0m0s 8760小時0分0秒的意思

//7.睡眠

rand.seed(time.now().unixnano())

n := rand.intn(10) + 1 //[1,10]返回的隨即數

//需要duration型別,雖然其底層型別也是int64,但是因為使用了type定義,所以不是同乙個型別,要去強轉一下才能用

time.sleep(time.duration(n) * time.minute) //程式睡眠[0-10]秒再繼續執行,這在很多語言中都有,操作基本一樣

}

關於時間的常用操作,還有一些方法是需要搭配"通道"使用的,待學習到通道的時候再補上

本系列學習資料參考:千鋒的茹姐

我的docker命令小抄

運維的同學幫忙配置好了乙個docker的映象,但是docker映象執行的時候沒有掛載我想要的目錄,這個時候我需要一頓操作來滿足我的要求。根據上面檢視命令的結果得到的container id為4c774d7a39fc sudo docker commit 4c774d7a39fc hdfs clien...

golang多核的使用

實際上協程只是發生在單個程序內部的,要是想充分的發掘多核cpu的潛力,還是需要多程序的支援。對於多核程式設計,go是天生支援,那麼我們在什麼情況下應該用多核心來加速程式,而在什麼情況下用單核即可呢?現在我們用一簡單的程式來說明下 定義任務佇列 varwaitgroup sync waitgroup ...

Golang陣列的傳遞

陣列與切片 陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列。陣列長度最大為2gb,它是值型別。切片是對陣列乙個連續片段的引用,所以切片是乙個引用型別。按值傳遞和按引用傳遞 go語言中函式的引數有兩種傳遞方式,按值傳遞和按引用傳遞。go預設使用按值傳遞來傳遞引數,也就是傳遞引數的副本。在函式...