专注于
IT技术和业内交流

go时间包使用详解

在平时开发中,特别是用户web开发中经常与时间打交道.所以在这介绍一下go的时间包常用用法.
减少在使用的一下麻烦.

时间戳与格式化时间字符串

go 的time package 提供了time.Format函数,用来对时间进行格式化输出。
类似的还有time.Parse用来解析字符串类型的时间到time.Time。这是两个互逆的函数。

time.Format使用

格式化时间的时间格式介绍:
含义 可选值
月份 1,01,Jan,January
日  2,02,_2
时  3,03,15,PM,pm,AM,am
分  4,04
秒  5,05
年  06,2006
时区 -07,-0700,Z0700,Z07:00,-07:00,MST
周几 Mon,Monday

月份

1 数字表示月份,去掉前导0
01 数字表示月份,保留前导0
Jan 缩写单词表示月份
January 全单词表示月份

小时的表示(原定义是下午3时,也就是15时)

3 用12小时制表示,去掉前导0
03 用12小时制表示,保留前导0
15 用24小时制表示,保留前导0
03pm 用24小时制am/pm表示上下午表示,保留前导0
3pm 用24小时制am/pm表示上下午表示,去掉前导0
其他同理
例如:

    var Time = time.Now().Unix() //获取当前时间
    fmt.Println(Time)            //输出当前时间eg:1458896131
    //自定义时间戳格式化
    tm := time.Unix(Time, 0)           //根据时间戳返回当地时间
    var format = "2006-01-02 03-04-05" //时间格式(参考格式介绍)
    out := tm.Format(format)
    fmt.Println(out) //输出2016-03-25 04-56-28
    format = "06-1-2 15-04-05"
    out = tm.Format(format)
    fmt.Println(out) //输出16-3-25 17-01-05 

time.Parse

使用time.Parse函数可以把格式化时间字符串解析成time.Time
用法和上面基本一样
time.Parse(formart, timeStr)
formar 就是时间格式,和上面转化格式统一eg:2006-01-02 03-04-05
timeStr 就是需要解析的时间字符串 eg:2016-03-25 04-56-28
例如:

    var timeStr = "2016-03-25"
    format = "2006-01-02"
    Tm, err := time.Parse(format, timeStr)
    if err == nil {
    Time = Tm.Unix()  //转化为unix时间戳
    fmt.Println(Time) //输出1458864000
    }

time.Time.AddDate的使用

func (t Time) AddDate(years int, months int, days int) Time {
….
}
AddDate方法是在当前得到的时间的基础上进行时间的增加,
eg:获取1年2个月1天后的时间可以 AddDate(1,2,1);
获取1年2个月1天前的时间可以 AddDate(-1,-2,-1);
例如:

    tm = time.Now()                   //获取当前时间
    newTm := tm.AddDate(1, 1, 1)      //1年1月1天后
    fmt.Println(newTm.Format(format)) //输出2017-04-26
    newTm = tm.AddDate(-1, -1, -1)    //1年1月1天前
    fmt.Println(newTm.Format(format)) //输出2015-04-24

未完待续….

未经允许,不得转载本站任何文章:代码山 » go时间包使用详解

分享到:更多 ()

专注品牌化高端网站建设

商务服务联系我们