天天看点

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

哎,先发下牢骚,go文档还是太弱了,特别是标准库中的文档说明,很多函数几乎就一句话过了。这点确实该向microsoft的msdn好好学学。

不用说,几乎是开发必须用到的包之一。time包的说明文档在:

<a href="http://golang.org/pkg/time/">http://golang.org/pkg/time/</a>

先注意下overview中的一句话:

the calendrical calculations always assume a gregorian calendar.

这个包的时间计算式是基于格里历,就是我们使用的公历。关于格里历的历史,可以看百度百科:

<a href="http://baike.baidu.com/view/391054.htm">http://baike.baidu.com/view/391054.htm</a>

看看godoc文档,最大的数据类型就是time了,这个time类型最微小可以表示到nanosecond(微毫秒,十亿份之一秒)。

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

time的比较是使用before,after和equal方法。看一眼after:

func (t time) after(u time) bool

很好,返回的是bool类型,是我们所需要的。

sub方法返回的是两个时间点之间的时间距离,看上图看到它返回的是duration结构,这个结构的具体类型和操作也在godoc中

add方法和sub方法是相反的,获取t0和t1的时间距离d是使用sub,将t0加d获取t1就是使用add方法

iszero方法:time的zero时间点是january 1, year 1, 00:00:00 utc,这个函数判断一个时间是否是zero时间点

local,utc,ln是用来显示和计算地区时间的。

显示:

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

特别是format这个函数,可以好好使用

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

文档中对这个weekday类型就没有说明!!没法,直接看代码可以看到:

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

weekday有一个string()方法

好了,看到这里外带我们有一个推测:

例子如下:

Go语言_时间篇Go的time包是标准库中的包之一下面从几个需求直接看time的使用

go的time之旅结束!!