time包提供了时间的显示和测量用的函数,日历计算采用的是公历。
    为了等下的代码能更好的理解,先写一个print函数

    1. func printTime(i string, t time.Time) {
    2. fmt.Println(i, t)
    3. }

    time包的函数及方法:
    基础用法:

    1. t1 := time.Now()
    2. printTime("当前时间:", t1)
    3. printTime("将时间转换为本地时区时间:", t1.Local())
    4. printTime("将时间转换成UTC和零时区(国际统一时间)", t1.UTC())

    使用Date函数,指定数值,返回一个设定的时间:

    1. t2 := time.Date(2012, time.March, 29, 9, 15, 0, 0, time.Local)
    2. printTime("测试Date()方法:", t2)

    通过Parse函数来格式化一个时间样式,layout是模板,value是值,且layout时间必须是2006年1月2日15点4分5秒,不管时间是用的哪个格式,返回的是一个UTC的时间。

    1. t3, _ := time.Parse("2006-01-02 15:04:05", "2018-01-01 09:12:37")
    2. printTime("使用parse函数:", t3)

    使用Formant方法格式化当前时间,layout时间必须是2006年1月2日15点4分5秒,不管时间是用的哪个格式。

    1. fmt.Println("使用Formant方法格式化当前时间:", time.Now().Format("2006-01-02 15:04:05"))

    使用String将时间转换成字符串

    1. fmt.Println("使用String方法格打印当前时间:", time.Now().String())

    使用Unix方法将时间转换为Unix时间,即从时间点1970年1月1日0时0分0秒UTC到指定时间的秒数

    1. fmt.Println("使用Unix方法获得秒数:", t3.Unix())

    使用UnixNano方法将时间转换为Unix时间,即从时间点1970年1月1日0时0分0秒UTC到指定时间的纳秒数

    1. fmt.Println("使用UnixNano方法获得纳秒数:", t3.UnixNano())

    使用Equal方法,判断时间是否相等

    1. fmt.Println("使用Equal方法判断时间是否相等:", t3.Equal(time.Now())) //false

    使用Before方法,判断时间是否在某个时间之前

    1. fmt.Println("使用Before方法判断t2是否在t3之前:", t2.Before(t3)) //true

    使用After方法,判断时间是否在某个时间之后

    1. fmt.Println("使用After方法判断t2是否在t3之后:", t2.After(t3)) //false

    使用Date方法,返回指定的时间对应的年月日信息,月打印出来是英文单词。

    1. y1, m1, d1 := time.Now().Date()
    2. fmt.Printf("使用Date方法获取当前是:%v年%v月%v日 \n", y1, m1, d1)

    使用Year方法返回对应的年信息

    1. fmt.Println("使用Year方法返回的年是:", time.Now().Year())

    使用Month方法返回对应的月信息,返回的月信息是英文单词。

    1. fmt.Println("使用Month方法返回的月是:", time.Now().Month())

    使用Day方法返回对应的日信息

    1. fmt.Println("使用Day方法返回的日是:", time.Now().Day())

    使用Cluck方法返回指定的时间的小时,分,秒

    1. h1, min1, s1 := time.Now().Clock()
    2. fmt.Printf("使用Clock方法获取当前是:%v时%v分%v秒 \n", h1, min1, s1)
    1. fmt.Println("使用Hour方法返回的小时是:", time.Now().Hour())
    2. fmt.Println("使用Minute方法返回的分钟是:", time.Now().Minute())
    3. fmt.Println("使用Second方法返回的秒是:", time.Now().Second())
    4. fmt.Println("使用NanoSecond方法返回的纳秒是:", time.Now().Nanosecond())

    使用Sub方法返回一个时间段,仅显示小时、分钟、秒,及Sub下的几个方法。

    1. fmt.Println("使用Sub方法算出t2到现在的时间:", time.Now().Sub(t2))
    2. //使用Hours方法将Sub方法获得的时间转换为小时为单位的int64值
    3. fmt.Println("使用Hours方法算出t2到现在的时间:", time.Now().Sub(t2).Hours(), "小时")
    4. //使用Minuter方法将Sub方法获得的时间转换为分钟为单位的int64值
    5. fmt.Println("使用Minutes方法算出t2到现在的时间:", time.Now().Sub(t2).Minutes(), "分钟")
    6. //使用Seconds方法将Sub方法获得的时间转换为秒为单位的int64值
    7. fmt.Println("使用Seconds方法算出t2到现在的时间:", time.Now().Sub(t2).Seconds(), "秒")
    8. //使用Seconds方法将Sub方法获得的时间转换为纳秒为单位的int64值
    9. fmt.Println("使用Nanoseconds方法算出t2到现在的时间:", time.Now().Sub(t2).Nanoseconds(), "纳秒")
    10. //使用String方法返回时间段采用"01h02m03s格式的字符串
    11. fmt.Println("使用String方法打印t2到现在时间的字符串:", time.Now().Sub(t2).String())

    使用ParseDuration解析一个时间段字符串。
    一个时间段字符串是一个序列,每个片段包含可选的正负号、十进制数、可选的小数部分和单位后缀,如”300ms”、”-1.5h”、”2h45m”。
    合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。

    1. d3, _ := time.ParseDuration("300h")
    2. fmt.Printf("通过ParseDuration函数,解析出来的时间段,类型为:%T,数值为:%v \n", d3, d3)

    使用Add方法获得一个时间加上指定时间段

    1. fmt.Println("t2加上d3是:",t2.Add(d3))

    使用AddDate方法,在指定时间上,加上一个年月日,获得日期。

    1. fmt.Println("t2过上10年是",t2.AddDate(10,0,0))