Go語(yǔ)言中DateTime的用法介紹
一、基本使用
①?gòu)膶儆趖ime這個(gè)包
②一般使用都是使用
time.Time 這個(gè)類型表示時(shí)間 ,time包中還有一些常量,源碼如下
// Common durations. There is no definition for units of Day or larger
// to avoid confusion across daylight savings time zone transitions.
//
// To count the number of units in a Duration, divide:
// second := time.Second
// fmt.Print(int64(second/time.Millisecond)) // prints 1000
//
// To convert an integer number of units to a Duration, multiply:
// seconds := 10
// fmt.Print(time.Duration(seconds)*time.Second) // prints 10s
//<br data-filtered="filtered">
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)③ time.Now() 獲取當(dāng)前的時(shí)間,返回的是Time類型
Time類型中的
- Year() 獲取當(dāng)前的年份
- Month() 獲取當(dāng)前的月份
- Day() 獲取當(dāng)前的日期
- Hour() 獲取當(dāng)前小時(shí)
- Minute() 獲取當(dāng)前分鐘
- Second() 獲取當(dāng)前秒
④常用 Unix() 方法獲取時(shí)間戳信息
⑤通過(guò)AddDate()方法增加指定日期,Add方法增加指定時(shí)間
舉個(gè)例子:
- ①打印時(shí)間基礎(chǔ)信息
func DateTimeBasic() time.Time{
now:=time.Now()
fmt.Printf("%v\n",now)
year:=now.Year()
month:=now.Month()
day:=now.Day()
hour:=now.Hour()
minute:=now.Minute()
send:=now.Second()
fmt.Printf("%02d/%02d/%02d %02d:%02d:%02d\n",year,month,day,hour,minute,send)
return now
}- ② 時(shí)間和時(shí)間戳直接的轉(zhuǎn)換 第一個(gè)函數(shù)輸入時(shí)間返回時(shí)間戳,第二個(gè)函數(shù)輸入時(shí)間戳返回時(shí)間
func GetDateTimeStamp(datetime time.Time) int64{
now:=datetime.Unix()
fmt.Printf("TimeStamp: %v\n",now)
return now
}
func GetDateTime(timeStamp int64){
now:=time.Unix(timeStamp,0)
fmt.Printf("DateTime: %v\n",now)
}- ③增加時(shí)間
func AddDay(src time.Time) time.Time{
//添加一天兩小時(shí)
src = src.AddDate(0,0,1).Add(time.Hour * 2)
return src
}- ④測(cè)試一下
package main
import "DateTimeDemo"
func main(){
dateTime:=DateTimeDemo.DateTimeBasic()
calcDateTime := DateTimeDemo.AddDay(dateTime)
timeStamp:=DateTimeDemo.GetDateTimeStamp(calcDateTime)
DateTimeDemo.GetDateTime(timeStamp)
}- ⑤輸出
2019-02-26 16:51:59.7509972 +0800 CST m=+0.010553801
2019/02/26 16:51:59
TimeStamp: 1551264719
DateTime: 2019-02-27 18:51:59 +0800 CST
二、簡(jiǎn)單定時(shí)器
利用time中Tick()方法
func SimpleTicker(){
//間隔兩秒,會(huì)像Channel中寫入一個(gè)數(shù)據(jù)
ticker := time.Tick(time.Second * 2)
for i := range ticker{
fmt.Printf("%v\n",i)
simpleTask()
}
}
func simpleTask(){
fmt.Println("Task Start")
}執(zhí)行結(jié)果:
2019-02-26 16:54:43.7828451 +0800 CST m=+2.077803401
Task Start
2019-02-26 16:54:45.7831559 +0800 CST m=+4.078114201
Task Start
2019-02-26 16:54:47.7831744 +0800 CST m=+6.078132701
Task Start
2019-02-26 16:54:49.7833155 +0800 CST m=+8.078273801
Task Start
2019-02-26 16:54:51.782682 +0800 CST m=+10.077640301
Task Start
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Go語(yǔ)言對(duì)JSON數(shù)據(jù)進(jìn)行序列化和反序列化
這篇文章介紹了Go語(yǔ)言對(duì)JSON數(shù)據(jù)進(jìn)行序列化和反序列化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
解決GO編譯時(shí)避免引入外部動(dòng)態(tài)庫(kù)的問(wèn)題
最近碰到一個(gè)問(wèn)題,有一個(gè)流量采集的組件中使用到了github.com/google/gopacket 這個(gè)庫(kù),這個(gè)庫(kù)使用一切正常,但是唯獨(dú)有一個(gè)缺點(diǎn),編譯后的二進(jìn)制文件依賴于libpcap.so的動(dòng)態(tài)庫(kù),這篇文章主要介紹了GO編譯時(shí)避免引入外部動(dòng)態(tài)庫(kù)的解決方法,需要的朋友可以參考下2022-10-10
Go語(yǔ)言通過(guò)WaitGroup實(shí)現(xiàn)控制并發(fā)的示例詳解
Channel能夠很好的幫助我們控制并發(fā),但是在開(kāi)發(fā)習(xí)慣上與顯示的表達(dá)不太相同,所以在Go語(yǔ)言中可以利用sync包中的WaitGroup實(shí)現(xiàn)并發(fā)控制,本文就來(lái)和大家詳細(xì)聊聊WaitGroup如何實(shí)現(xiàn)控制并發(fā)2023-01-01
Go語(yǔ)言結(jié)合validator包實(shí)現(xiàn)表單驗(yàn)證
在現(xiàn)代?Web?開(kāi)發(fā)中,表單驗(yàn)證和錯(cuò)誤處理是至關(guān)重要的環(huán)節(jié),本文將演示如何使用?Go?語(yǔ)言的?Gin?框架結(jié)合?validator?包,實(shí)現(xiàn)高級(jí)的表單驗(yàn)證功能,需要的可以參考下2024-11-11
詳解Golang中interface{}的注意事項(xiàng)
學(xué)習(xí)?golang?,對(duì)于?interface{}?接口類型,我們一定繞不過(guò),這篇文章咱們就來(lái)一起來(lái)看看?使用?interface{}?的時(shí)候,都有哪些注意事項(xiàng)吧2023-03-03

