• 23.2 时间-定时器、格式化时间


    1. 定时器

    time包的Tick函数会开启一个子线程,同时向父线程返回一个定时器通道

    • 子线程周期性地向定时器通道发送Time类型的数据,其周期间隔由参数指定。
      • 父线程通过循环迭代定时器通道,周期性地执行特定操作。

    基于循环的定时器操作。

    • for t := range time.Tick(time.Second) { // 每隔1秒钟迭代一次
    •         fmt.Printf("\r%v", t.Format("02 Jan 2006 15:04:05"))
    • }
    1. // 定时器
    2. // time包的Tick函数返回一个通道,该通道每间隔一个特定的周期被写入一次时间消息
    3. package main
    4. import (
    5.     "fmt"
    6.     "time"
    7. )
    8. func main() {
    9.     for t := range time.Tick(time.Second) {
    10.         fmt.Printf("\r%v", t.Format("02 Jan 2006 15:04:05"))
    11.     }
    12. }
    13. // 打印输出:
    14. 30 Dec 2018 15:07:06

    2. 格式化时间

    将时间表示为字符串可以采用多种格式,以下是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方法——标准格式化。

    • fmt.Println(t.Format(time.ANSIC))
      • Mon Feb 10 11:34:54 2020 

    用自定义格式化字符串作参数调用Format方法——自由格式化。

    • fmt.Println(t.Format("02 Jan 2006 15:04:05"))
      • 10 Feb 2020 11:34:54

    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/...(不含尾零)

    1. // 格式化时间
    2. // Go支持如下时间格式标准:
    3. // +-------------+-------------------------------------+
    4. // | STANDARD | FORMAT |
    5. // +-------------+-------------------------------------+
    6. // | ANSIC | Mon Jan _2 15:04:05 2006 |
    7. // | UnixDate | Mon Jan _2 15:04:05 MST 2006 |
    8. // | RubyDate | Mon Jan 02 15:04:05 -0700 2006 |
    9. // | RFC822 | 02 Jan 06 15:04 MST |
    10. // | RFC822Z | 02 Jan 06 15:04 -0700 |
    11. // | RFC850 | Monday, 02-Jan-06 15:04:05 MST |
    12. // | RFC1123 | Mon, 02 Jan 2006 15:04:05 MST |
    13. // | RFC1123Z | Mon, 02 Jan 2006 15:04:05 -0700 |
    14. // | RFC3339 | 2006-01-02T15:04:05Z07:00 |
    15. // | RFC3339Nano | 2006-01-02T15:04:05.999999999Z07:00 |
    16. // | Kitchen | 3:04PM |
    17. // | Stamp | Jan _2 15:04:05 |
    18. // | StampMilli | Jan _2 15:04:05.000 |
    19. // | StampMicro | Jan _2 15:04:05.000000 |
    20. // | StampNano | Jan _2 15:04:05.000000000 |
    21. // +-------------+-------------------------------------+
    22. package main
    23. import (
    24.     "fmt"
    25.     "log"
    26.     "time"
    27. )
    28. func main() {
    29.     t, err := time.Parse( // 按指定格式解析时间
    30. time.RFC3339, "2020-02-10T11:34:54+08:00")
    31.     if err != nil {
    32.         log.Fatal(err)
    33.     }
    34.     fmt.Println(t)
    35.     fmt.Println(t.Format(time.ANSIC))
    36. }
    37. // 打印输出:
    38. 2020-02-10 11:34:54 +0800 CST
    39. Mon Feb 10 11:34:54 2020

     

  • 相关阅读:
    利用GPT开发应用005:Codex、Turbo、ChatGPT、GPT-4
    ASPICE系列:如何定义软件单元验证策略
    OpenHarmony 设备环境查询:Environment
    什么是大语言模型以及如何构建自己的大型语言模型?
    Nginx-高可用及 KeepAlived 配置
    从二值 Mask 获取外接矩形坐标
    市场开始复苏,三星传调涨内存芯片高达20% | 百能云芯
    Python实现简易过滤删除数字的方法
    2.1.1进位计数制
    为什么要使用消息队列?
  • 原文地址:https://blog.csdn.net/AlieNeny/article/details/139759623