一、简介

这里介绍go中关于时间的常用操作。具体包括时间的获取、输出、转换、加减、比较等操作。 官网地址为:

二、使用

2.1 时间各字段输出

package main

import (

“fmt”

“time”

)

func main() {

//当前时间

now := time.Now()

fmt.Println(now)

//时间戳,单位秒

seconds_stamp := now.Unix()

fmt.Println(seconds_stamp)

//时间戳,单位纳秒 1秒=1e3毫秒=1e9纳秒

fmt.Println(now.UnixNano())

//时间戳,单位毫秒

fmt.Println(now.UnixNano() / 1e6)

//只输出年,其他字段类似

fmt.Println(now.Year())

//只输出月

fmt.Println(now.Month())

//只输出天

fmt.Println(now.Day())

//只输小时

fmt.Println(now.Hour())

//一年的第几天

fmt.Println(now.YearDay())

//年月日

fmt.Println(now.Date())

//时分秒

fmt.Println(now.Clock())

}

2.2 时间与字符串、时间戳转换

package main

import (

“fmt”

“time”

)

func main() {

//当前时间

now := time.Now()

//时间转时间戳,单位秒

seconds_stamp := now.Unix()

//时间转字符串,时间格式化,模板为2006-01-02 15:04:05,区别为java中yyyy-MM-dd HH:mm:ss

//解析在方法time.format.nextStdChunk(),用上符号表示年月日等,是因为各字段是互斥的,具体可以看源码

fmt.Println(now.Format(“2006-01-02 15:04:05”)) //2019-07-17 18:43:16

//时间戳转时间

fmt.Println(time.Unix(seconds_stamp, 0))

//字符串转时间

fmt.Println(time.Parse(“2006-01-02 15:04:05”, “2019-07-01 08:18:18”))

}

2.3 时间加减即时间段操作

package main

import (

“fmt”

“time”

)

func main() {

//当前时间

now := time.Now()

//自定义时间段

timeDur := time.Duration(10)*time.Second + time.Duration(1)*time.Minute

fmt.Println(timeDur)

//时间相加

nowAddTime := now.Add(timeDur)

fmt.Println(nowAddTime)

//时间相减,时间差(时间段)

diff := nowAddTime.Sub(now)

fmt.Println(diff) //1m10s

fmt.Println(diff.Hours()) //分为单位显示时间差,0.019444444444444445

fmt.Println(diff.Minutes()) //分为单位显示时间差,1.1666666666666667

fmt.Println(diff.Seconds()) //秒为单位显示时间差,70

//年月日添加

fmt.Println(nowAddTime.AddDate(1,-9,3)) //2019-10-20 18:55:56.654503204 +0800 CS

}

2.4 时间比较

package main

import (

“fmt”

“time”

)

func main() {

now := time.Now()

timeDur := time.Duration(10)*time.Second + time.Duration(1)*time.Minute

nowAddTime := now.Add(timeDur)

//时间比较

//时间之前比较

fmt.Println(nowAddTime.After(now)) //true

//时间之后比较

fmt.Println(nowAddTime.Before(now)) //false

//时间相等比较

fmt.Println(now.Equal(now)) //true

}

2.5 休眠

package main

import (

“fmt”

“time”

)

func main() {

//休眠1秒

time.Sleep(time.Second*1)

}