go 时间篇

Go的time包是标准库中的包之一

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

http://golang.org/pkg/time/

 

先注意下Overview中的一句话:

The calendrical calculations always assume a Gregorian calendar.

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

http://baike.baidu.com/view/391054.htm

 

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

clip_image001

 

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是用来显示和计算地区时间的。

 

下面从几个需求直接看time的使用

1 请打出当前时间的时间戳,然后将时间戳格式为年月日时分秒的形式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
 
import (
     "fmt"
     "time"
)
 
func main() {
     //时间戳
     t := time.Now().Unix()
     fmt.Println(t)
     
     //时间戳到具体显示的转化
     fmt.Println(time.Unix(t, 0 ).String())
     
     //带纳秒的时间戳
     t = time.Now().UnixNano()
     fmt.Println(t)
     fmt.Println( "------------------" )
     
     //基本格式化的时间表示
     fmt.Println(time.Now().String())
     
     fmt.Println(time.Now().Format( "2006year 01month 02day" ))
 
}

显示:

clip_image002

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

2 输出当前星期几?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
package main
 
import (
     "fmt"
     "time"
)
 
func main() {
     //时间戳
     t := time.Now()
     fmt.Println(t.Weekday().String())
 
}

clip_image003

 

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

clip_image004

 

Weekday有一个String()方法

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

 

当一个结构中有定义String()函数的时候,fmt.Println()是会调用String的

例子如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main
 
import (
     "fmt"
)
 
type MyStruct struct{
}
 
func (d MyStruct)String() string { return "mystruct" }
 
func main() {
     me := new (MyStruct)
     fmt.Println(me)
 
}

clip_image005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值