Go語言中DateTime的用法介紹
一、基本使用
①從屬于time這個包
②一般使用都是使用
time.Time 這個類型表示時間 ,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)前的時間,返回的是Time類型
Time類型中的
- Year() 獲取當(dāng)前的年份
- Month() 獲取當(dāng)前的月份
- Day() 獲取當(dāng)前的日期
- Hour() 獲取當(dāng)前小時
- Minute() 獲取當(dāng)前分鐘
- Second() 獲取當(dāng)前秒
④常用 Unix() 方法獲取時間戳信息
⑤通過AddDate()方法增加指定日期,Add方法增加指定時間
舉個例子:
- ①打印時間基礎(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
}- ② 時間和時間戳直接的轉(zhuǎn)換 第一個函數(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)
}- ③增加時間
func AddDay(src time.Time) time.Time{
//添加一天兩小時
src = src.AddDate(0,0,1).Add(time.Hour * 2)
return src
}- ④測試一下
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
二、簡單定時器
利用time中Tick()方法
func SimpleTicker(){
//間隔兩秒,會像Channel中寫入一個數(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
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Go語言對JSON數(shù)據(jù)進(jìn)行序列化和反序列化
這篇文章介紹了Go語言對JSON數(shù)據(jù)進(jìn)行序列化和反序列化的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
Go語言通過WaitGroup實(shí)現(xiàn)控制并發(fā)的示例詳解
Channel能夠很好的幫助我們控制并發(fā),但是在開發(fā)習(xí)慣上與顯示的表達(dá)不太相同,所以在Go語言中可以利用sync包中的WaitGroup實(shí)現(xiàn)并發(fā)控制,本文就來和大家詳細(xì)聊聊WaitGroup如何實(shí)現(xiàn)控制并發(fā)2023-01-01
Go語言結(jié)合validator包實(shí)現(xiàn)表單驗(yàn)證
在現(xiàn)代?Web?開發(fā)中,表單驗(yàn)證和錯誤處理是至關(guān)重要的環(huán)節(jié),本文將演示如何使用?Go?語言的?Gin?框架結(jié)合?validator?包,實(shí)現(xiàn)高級的表單驗(yàn)證功能,需要的可以參考下2024-11-11
詳解Golang中interface{}的注意事項(xiàng)
學(xué)習(xí)?golang?,對于?interface{}?接口類型,我們一定繞不過,這篇文章咱們就來一起來看看?使用?interface{}?的時候,都有哪些注意事項(xiàng)吧2023-03-03

