0. 概述

在 Python 中已经有了一个很不错的时间工具:dateutil,通过 dateutil 可以对时间进行各种操作,但是在 Go 中之前还没有发现类似好用的,直到最近我发现了 goment,一款 Go 语言中操作时间的不错工具库。

1. 原生的 Golang 时间操作

在原生的 Go 标准库中,要想将一个 Time 类型转换成 String 类型,得用 Fromat,然后里面的格式得用一个比较独特的:2006 01 02 15:04:05 不知道你知不知道这段时间的含义(看代码注释有),但是,用起来就是很麻烦。

2. goment 解析时间字符串

要想用 goment 进行解析字符串,然后转换成时间,那么可以这么做:

  1. [[email protected].io]# cat demo01.go
  2. goment.New('2013-02-08 09:30:26')

这是针对比较标准的情况的,如果不是这种 “好” 格式的时间字符串,那么就得需要自己来指定格式,这个格式肯定就不是 “2006 01 02 15:04:05 Sat” 这种形式啦, goment 有自己的时间格式标准,和 Python 的时间格式差不多:

  1. YYYY-MM-DD HH:mm:ss

但是不同的是,字母的数量 goment 会解析成不同的含义,例如就 MM 来说,不同数量的 M 的含义分别是:

字符 含义
M 1 2 … 11 12
MM 01 01 … 11 12
MMM Jan Feb … Nov Dec
MMMM January February … November December

这就很有意思了,我有预感,这个库会流行的。话说回来,如果自定义解析方式的话,是这样操作的:

  1. [[email protected].io]# cat demo02.go
  2. goment.New('02-08-2003', "MM-DD-YYYY")

4. goment 时间转字符串

这种反过来也简单了:

  1. [[email protected].io]# cat demo03.go
  2. g.Format('YYYY-MM-DD')

总的来说,这个库用起来还是很顺手的。

5. 参考资料