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

不用说,几乎是开发必须用到的包之一。time包的说明文档在:(推荐:go视频教程)

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

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

1.jpg

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 请打出当前时间的时间戳,然后将时间戳格式为年月日时分秒的形式

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")) }

显示:

2.jpg

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

2 输出当前星期几?

package main import (    "fmt"    "time") func main() {    //时间戳    t := time.Now()    fmt.Println(t.Weekday().String()) }

3.jpg

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

4.jpg

Weekday有一个String()方法

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

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

例子如下:

package main import (    "fmt") type MyStruct struct{} func (d MyStruct)String() string {return "mystruct"} func main() {    me := new(MyStruct)    fmt.Println(me) }

5.jpg

更多go知识请关注go语言教程栏目。

更多相关文章

  1. golang操作Redis&Mysql&RabbitMQ的方法介绍
  2. go语言查看环境信息的方法
  3. Go生成go动态库或静态库的方法
  4. golang读取文本乱码解决方法
  5. cmd执行golang乱码解决方法
  6. golang io读取文件与判断文件是否存在的方法
  7. golang查找文件是否存在的方法
  8. golang中的错误处理方法
  9. golang web开发乱码的原因与解决方法

随机推荐

  1. 【Android UI设计与开发】第06期:底部菜单
  2. 做自己的Android ROM,屏蔽对framework中的
  3. Android手把手视频教程 | 课程简介
  4. Android API Guides---Localizing with R
  5. Android主题theme和样式style总结
  6. Android 进程和线程模型 .
  7. Adapter
  8. Android原生Json解析
  9. Android JNI(NDK)开发总结
  10. Android获取SD卡路径/内存的几种方法