time包的Tick函数会开启一个子线程,同时向父线程返回一个定时器通道。
基于循环的定时器操作。
- // 定时器
- // time包的Tick函数返回一个通道,该通道每间隔一个特定的周期被写入一次时间消息
- package main
-
- import (
- "fmt"
- "time"
- )
-
- func main() {
- for t := range time.Tick(time.Second) {
- fmt.Printf("\r%v", t.Format("02 Jan 2006 15:04:05"))
- }
- }
- // 打印输出:
- 30 Dec 2018 15:07:06
将时间表示为字符串可以采用多种格式,以下是Go语言支持的格式标准:
标准 | 格式 |
ANSIC(美国国家标准时间) | Mon Jan _2 15:04:05 2006 |
UnixDate(Unix系统常用格式) | Mon Jan _2 15:04:05 MST 2006 |
RubyDate(Ruby语言格式) | Mon Jan 02 15:04:05 -0700 2006 |
RFC822 | 02 Jan 06 15:04 MST |
RFC822Z | 02 Jan 06 15:04 -0700 |
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 |
RFC3339 | 2006-01-02T15:04:05Z07:00 |
RFC3339Nano | 2006-01-02T15:04:05.999999999Z07:00 |
Kitchen | 3:04PM |
Stamp | Jan _2 15:04:05 |
Go语言使用time包的导出类型Time表示时间,该类型的Format方法可根据参数指定的格式,将时间格式化为字符串。
用格式化标准整型常量作参数调用Format方法——标准格式化。
用自定义格式化字符串作参数调用Format方法——自由格式化。
Go语言通过下面的格式标记来描述各个时间元素的格式。Go语言支持对下述时间元素进行独立化的时间格式控制。
时间元素 | 格式标记 | |||
年 | 2006/06 | |||
月 | January/Jan/01/1 | |||
日 | 02/_2/2 | |||
星期 | Monday/Mon | |||
上下午 | PM/pm | |||
时区名 | MST | |||
时区 | Z07:00:00/Z07:00 | Z070000/Z0700 | Z07 | |
-07:00:00/-07:00 | -070000/-0700 | -07 | ||
时 | 15(24小时制) | 03/3(12小时制) | ||
分 | 04/4 | |||
秒 | 05/5 | |||
小数秒 | .0/.00/.000/...(含尾零) | .9/.99/.999/...(不含尾零) |
- // 格式化时间
- // Go支持如下时间格式标准:
- // +-------------+-------------------------------------+
- // | STANDARD | FORMAT |
- // +-------------+-------------------------------------+
- // | 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 |
- // | 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 |
- // | RFC3339 | 2006-01-02T15:04:05Z07:00 |
- // | RFC3339Nano | 2006-01-02T15:04:05.999999999Z07:00 |
- // | Kitchen | 3:04PM |
- // | 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 |
- // +-------------+-------------------------------------+
- package main
- import (
- "fmt"
- "log"
- "time"
- )
-
- func main() {
- t, err := time.Parse( // 按指定格式解析时间
- time.RFC3339, "2020-02-10T11:34:54+08:00")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(t)
- fmt.Println(t.Format(time.ANSIC))
- }
- // 打印输出:
- 2020-02-10 11:34:54 +0800 CST
- Mon Feb 10 11:34:54 2020