Time中定义的时间格式化常量:

const (

ANSIC       = "Mon Jan _2 15:04:05 2006"

UnixDate    = "Mon Jan _2 15:04:05 MST 2006"

RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"

RFC822      = "02 Jan 06 15:04 MST"

RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone

RFC850      = "Monday, 02-Jan-06 15:04:05 MST"

RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"

RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone

RFC3339     = "2006-01-02T15:04:05Z07:00"

RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

Kitchen     = "3:04PM"

// Handy time stamps.

Stamp      = "Jan _2 15:04:05"

StampMilli = "Jan _2 15:04:05.000"

StampMicro = "Jan _2 15:04:05.000000"

StampNano  = "Jan _2 15:04:05.000000000"

)

这些常量是在time包中进行time格式化和time解析而预定义的一些常量,它们实际上都是同一个时间:

Mon Jan 2 15:04:05 MST 2006

换算成Unix时间为1136239445,MST时间是GMT-0700(UTC -07:00),上面定义时间可以被理解为下面这个格式:

01/02 03:04:05PM '06-0700 (注:01对应Month,02对应Day,03对应Hour,04对应Minute,05对应Second,06对应四位Year的后两位)

可以模仿上面的格式定义一个自己的时间输出格式:

layout := "Year:2006 Month:01 Day:02 Hour:03 Min:04 Second:05"

fmt.Println(time.Now().Format(layout))

输出:

Year:2017 Month:02 Day:16 Hour:05 Min:04 Second:36

也可以使用前面常量中定义的格式来格式化Time:

fmt.Println(time.Now().Format(time.RFC1123))

After函数:

定义:func After(d Duration) <-chan Time    (返回值是一个单向channel)

After接受一个time.Duration参数,等待参数指定的时间后,返回一个类型为Time的channel,并向这个channel中发送一个当前时间的Time对象。

示例(利用After来设定等待超时时间):

fmt.Println(time.Now())

c := make(chan int)

go func() {

time.Sleep(time.Second * 10)

c <- 1

} ()

select {

case x := <- c:

fmt.Println("Received", x)

case t := <- time.After(time.Second * 5):

fmt.Println("Timeout at", t)

}

Sleep函数:

定义:func Sleep(d Duration)

Sleep方法根据传入的time.Duration参数阻塞当前goroutine,如果传入0或者负值,则直接返回。

Tick函数:

定义:func Tick(dDuration) <-chan Time

Tick方法接受一个time.Duration参数,返回一个Timechannel,并且每隔一段时间(参数Duration定义的时间)会向该channel中传入一个当前时间的Time对象。当传入的参数d <= 0的时候,Tick会返回nil。

示例:

c := time.Tick(time.Second * 5)

fmt.Println(time.Now())

func() {

for i := 0; i < 3; i++ {

select {

case t := <- c:

fmt.Println(t)

}

}

} ()

Duration类型:

一个Duration类型变量代表了2个int64类型的纳秒(nanosecond)的差值(所以它本身也是int64类型),最大的Duration不能超过290年。

常量定义:

const (

Nanosecond  Duration = 1

Microsecond          = 1000 * Nanosecond

Millisecond          = 1000 * Microsecond

Second               = 1000 * Millisecond

Minute               = 60 * Second

Hour                 = 60 * Minute

)

可以通过乘法得到Duration:

var d Duration

d = time.Second * 5    // 5 seconds

ParseDuration函数:

定义:func ParseDuration(sstring) (Duration, error)

ParseDuration方法接受一个string参数,该string参数为一个由有符号的十进制数字与时间单位的组成的字符串,例如“300ms”,"-1.5h"或者"2h45m",有效的时间单位有:"ns","us"("µs"),"ms","s","m","h"

Since函数:

定义:func Since(t Time)Duration

该方法返回自参数t到现在一共经过的时间,等价于time.Now().Sub(t)

Duration的Hours方法:

定义:func (d Duration) Hours()float64

返回一个Duration结构对应的小时数(即将Duration换算成小时的值)

Duration的Minutes方法:

定义:func (dDuration) Minutes() float64

返回一个Duration结构对应的分钟数(即将Duration换算成分钟的值)

Duration的Nanoseconds方法:

定义:func (dDuration) Nanoseconds() int64

返回一个Duration结构对应的纳秒数(即将Duration换算成纳秒的值,注意这里的返回值是整形)

Duration的Seconds方法:

定义:func (dDuration) Seconds() float64

返回一个Duration结构对应的秒数(即将Duration换算成秒的值)

Duration的String方法:

定义:func (d Duration)String() string

该方法为ParseDuration的逆运算,用于将一个Duration转换为一个类似于"72h3m5s"这种格式的字符串

Location类型:

Location代表时区,主要用于计算时间的偏移量

FixedZone函数:

定义:funcFixedZone(name string, offset int) *Location

该方法根据参数中给定的时区名称以及偏移值(从UTC时区向东经过的秒数)返回一个Locaiton对象

LoadLocation函数:

定义:funcLoadLocation(name string) (*Location, error)

该方法根据参数指定的时区名称返回一个Location对象,例如"UTC"返回UTC Location,"Local"返回本地时区

Location的String方法:

定义:func (l*Location) String() string

返回一个参数Location对应的时区的描述性名称

Month类型:

Month有关的常量定义:

const (

January Month = 1 + iota

February

March

April

May

June

July

August

September

October

November

December

)

Month的String方法:

定义:func (m Month)String() string

返回"January","February"….这些代表月份的字符串

ParseError类型:

ParseError结构定义了将一个string解析成Time对象时的错误

type ParseError struct {

Layout     string

Value      string

LayoutElem string

ValueElem  string

Message    string

}

ParseError的Error方法:

定义:func (e*ParseError) Error() string

该方法返回一个代表该ParseError的字符串

Ticker类型:

Ticker类型包含了一个用于时钟轮询的channel

type Ticker struct {

C <-chan Time // The channel on which the ticks are delivered.

// contains filtered or unexported fields

}

NewTicker函数:

定义:func NewTicker(dDuration) *Ticker

该方法返回一个包含一个channel的Ticker对象,根据传入的Duration参数,该channel中会每隔对应的时间放入一个代表当前时间的Time对象,参数d必须大于0,否则该函数会Panic。Stop方法会释放掉相关资源。

Ticker的Stop方法:

定义:func (t *Ticker)Stop()

刚方法停止一个Ticker,当停止后,对应的channel中不再产生新的Time对象,但是该方法不会关闭对应的channel,以防止从该channel中读取Time对象的操作会错误的结束

Ticker的示例:

tk := time.NewTicker(time.Second)

for i := 0; i < 10; i++ {

select {

case t := <- tk.C:

fmt.Println(t)

}

}

tk.Stop()

Go语言中Time的用法[1]相关推荐

  1. c语言中getche的用法,c语言中getch的用法

    [www.hywsbj.com--图表展板] getch()函数是无回显的从控制台取得一个字符.以利用getch()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面,即任意键继续效果.下面小编 ...

  2. php indexof的用法,c语言中indexof的用法有哪些

    c语言中indexof的用法有哪些 index在互联网上表示网站的默认主页.一般为 index.html index.htmindex.aspindex.php:另外的默认主页也多用default.h ...

  3. c语言中point的用法_关于C语言Switch语句,先学这些技巧够不够?

    一.C语言中switch的用法 1.switch后面括弧内的[表达式],ANSI标准允许它为任何类型: 2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,否则,就 ...

  4. c语言中size of 用法,C语言中sizeof()的用法

    要参加软件研发的笔试(C/C++)几乎都会涉及到sizeof()的用法,我昨天也遇到了,有的也会,但是真正sizeof()的核心还是没有领会,今天上网,无聊中就看到了详细的sizeof()的阐述,现在 ...

  5. C语言中const的用法

    C语言中const的用法 基本解释         const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解co ...

  6. sql 语言中 when case 用法

    sql语言中有没有相似C语言中的switch case的语句?? 没有,用case when 来取代就行了. 比如,以下的语句显示中文年月 select getdate() as 日期,case mo ...

  7. c语言中switch的用法是什么?

    c语言中switch的用法是: 功能:switch语句是多分支选择语句.用来实现多分支选择结构.if语句只有两个分支可供选择,而实际问题中常常要用到多分支的选择.例如,学生成绩分类(90为" ...

  8. #define c# 报错_c语言中#define的用法

    c语言中#define的用法 C语言中,可以用 #define 定义一个标识符来表示一个常量.其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了. 预编译又叫预处理.预编译 ...

  9. getch方法_c语言中getch的用法

    1 c 语言中 getch 的用法 getch() 函数是无回显的从控制台取得一个字符. 以利用 getch() 函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面 , 即 任意键继续效果.下面 ...

  10. C语言中delay的用法

    转自:微点阅读  https://www.weidianyuedu.com C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现.下面微点阅读小编就跟你们详细介绍下c语言中del ...

最新文章

  1. 程序员请不要问“在吗?”
  2. linux redhat 下命令行全部乱码解决
  3. C++ error:LNK2005 已经在*.obj中定义
  4. Windows UI风格的设计(11)
  5. 如何将mysql文件导入MySQL_如何将mysql5的sql文件导入到mysql4?
  6. Numpy数组的广播机制
  7. MapXtreme 2005新增内容
  8. py程序员写代码的习惯养成 防止想到什么写什么
  9. bootstrap-multiselect.js如何动态更新select里的数据
  10. ORACLE HANDBOOK系列之十:字符集、编码以及Oracle的那些事
  11. setsockopt用法详解
  12. Python 修改图片的时候抗锯齿
  13. Linux卸载驱动方法
  14. Ubuntu安装过程之磁盘分区图文教程
  15. 关于井冈山大学校园宽带WIFI多人共享解决的一些思路
  16. java后台实现支付宝支付接口、支付宝订单查询接口 前端为APP
  17. 张小龙回应一切!2019微信公开课一人撑到半夜,4小时演讲3万字实录
  18. html如何快速转pDF,如何快速实现pdf转html网页文件 高能方法帮你解决80%职场难题...
  19. 计算机方面经典书籍一
  20. 计算机网络——虚拟机网络的三种模式介绍-桥接模式-NAT模式-仅主机模式

热门文章

  1. 2003年我收集的一些知名blog
  2. Java小农养成记第二十一天
  3. CTF网络安全比赛简介
  4. c通讯录 :动态申请内存版本
  5. 四、使用知识-让知识带来价值
  6. 让iOS开发变得更有效率-分类、工具类
  7. [好文!!!]pyecharts实现星巴克门店分布可视化分析
  8. 软件工程:黄金G点小游戏1.0
  9. JAVA金三银四面试专题讲解
  10. 项目外包跟人力外包_您应该外包下一个开源项目吗?