go語言time包的使用


時間類型

time.Time類型表示時間。

//時間類型
func timeDemo()  {
    now := time.Now()
    fmt.Println(now)    //2019-04-20 13:52:35.226397 +0800 CST m=+0.000336111
    fmt.Println(now.Format("2006-01-02 15:04")) //2019-04-20 13:52
    year := now.Year()
    month := now.Month()
    day := now.Day()
    hour := now.Hour()
    minute := now.Minute()
    second := now.Second()
    //輸出格式可以自定義
    fmt.Printf("%d,%02d,%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second) //2019,04,24 18:13:48
}
//字符串類型轉time
    s4 := "1999年10月19日" //字符串
    t4, err := time.Parse("2006年01月02日", s4)
    if err != nil {
        fmt.Println("err", err)
    }
    fmt.Println(t4)

 

時間戳

時間戳是自1970年1月1日(08:00:00GMT)至當前時間的總毫秒數。它也被稱為Unix時間戳(UnixTimestamp)。

//時間戳
func timestampDemo()  {
    now := time.Now()
    timestamp := now.Unix()
    fmt.Println(timestamp)  //1556101693
}

time.Unix()函數將時間戳轉為時間格式。

func timestampDemo2(timestamp int64) {
    timeObj := time.Unix(timestamp, 0) //將時間戳轉為時間格式
    fmt.Println(timeObj)    //2019-04-24 18:30:12 +0800 CST
    year := timeObj.Year()     //年
    month := timeObj.Month()   //月
    day := timeObj.Day()       //日
    hour := timeObj.Hour()     //小時
    minute := timeObj.Minute() //分鍾
    second := timeObj.Second() //秒
    fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second) //2019-04-24 18:30:12
}

時間間隔

Duration類型代表兩個時間點之間經過的時間,以納秒為單位。

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

時間加時間間隔

語法:

func (t Time) Add(d Duration) Time

示例:計算1小時后及1小時前時間

func main() {
    now := time.Now()
    later := now.Add(time.Hour)
    fmt.Println(later)
    before := now.Add(-time.Hour)
    fmt.Println(before)
}

定時器

time.Tick(時間間隔)來設置定時器。

//定時器,每隔1s打印下i
func tickDemo() {
    ticker := time.Tick(time.Second)
    for i := range ticker{
        fmt.Println(i)
    }
}

睡眠sleep

time.Sleep(3 *time.Second)
fmt.Println("睡眠3s")

睡眠[1-10隨機數]

//睡眠[1-10隨機數]
    rand.Seed(time.Now().UnixNano())
    randNum := rand.Intn(10) + 1 //int類型,需要轉換
    fmt.Println(randNum)
    time.Sleep(time.Duration(randNum) * time.Second)
    fmt.Printf("睡了%d秒\n", randNum)

時間格式化

Go語言中格式化時間模板不是常見的Y-m-d H:M:S而是使用Go的誕生時間2006年1月2號15點04分(記憶口訣為2006 1 2 3 4 5)。

//時間格式化
func formatDemo() {
    now := time.Now()
    // 格式化的模板為Go的出生時間2006年1月2號15點04分
    fmt.Println(now.Format("2006-01-02 15:04:05"))  //2019-04-24 18:37:59
    fmt.Println(now.Format("2006/01/02 15:04"))
    fmt.Println(now.Format("15:04 2006/01/02"))
    fmt.Println(now.Format("2006/01/02"))
}

時間比較

Equal

判斷時間是否相等,會有時區影響。

func (t Time) Equal(u Time) bool

Before

func (t Time) Before(u Time) bool

如果t代表的時間點在u之前,返回真;否則返回假。

After

func (t Time) After(u Time) bool

如果t代表的時間點在u之后,返回真;否則返回假。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM