关于go:如何记住Go-timeFormat风骚的使用方法

4次阅读

共计 1222 个字符,预计需要花费 4 分钟才能阅读完成。

其它编程语言的开发者,在第一次应用 Go 的工夫格式化办法时肯定会一脸懵逼,为什么不是我相熟的 yyyy、MM、dd,而是一个非凡的年、月、日数字呢?

首先看一下正确的应用办法

// 代码
s := time.Now().Format("2006-01-02 15:04:05.999999")
fmt.Printf("%s\n", s)

// 后果(正确)
2022-06-14 23:21:48.655781

如果前面的工夫轻易输出呢?(其实我是复制下面的输入后果)

// 代码
s := time.Now().Format("2022-06-14 23:21:48.655781")
fmt.Printf("%s\n", s)

// 后果(出其不意)
141414-22-627 1411:146:278.61818786

既然必须得按人家的标准来,那咱们如何不便疾速得记住这段神奇的数字呢?
官网的文档和源码中有这么一记录:

// These are predefined layouts for use in Time.Format and time.Parse.
// The reference time used in these layouts is the specific time stamp:
//    01/02 03:04:05PM '06 -0700

其实就是 1 月 2 日 3 点 (下午)4 分 5 秒 6 年 - 7 时区( 崔健:一二三四五六七呀……
咱们日常习惯都是年月日,给记忆带来了一丢丢麻烦,不论时区的话就是:612345。
记住了吗?写几个试试呗?

// 代码
s := time.Now().Format("2006 年 01 月 02 日 15 时 04 分 05 秒 999 毫秒")
fmt.Printf("%s\n", s)

// 输入(发现了吗?除了毫秒都正确!)
2022 年 06 月 14 日 23 时 46 分 45 秒 999 毫秒

// 通过测试,发现毫秒后面必须有:, 或者.,应用 9 或者 0 都能够
time.Now().Format("2006 年 01 月 02 日 15 时 04 分 05 秒.000 毫秒")


// 代码(整个奇怪的形态,月日时秒不补 0)
s := time.Now().Format("2006/1/2 3:04:5")
fmt.Printf("%s\n", s)

// 输入
2022/6/14 11:53:2

各种细节还是得看文档:

//    Year: "2006" "06"
//    Month: "Jan" "January"
//    Textual day of the week: "Mon" "Monday"
//    Numeric day of the month: "2" "_2" "02"
//    Numeric day of the year: "__2" "002"
//    Hour: "15" "3" "03" (PM or AM)
//    Minute: "4" "04"
//    Second: "5" "05"
//    AM/PM mark: "PM"

看了这么多,你学废了吗?如果还不会用,那就本人封装一个 yyyyMMdd 本人习惯的形式吧,Go 纯正就是把 2006、01、02 这些数字当成了 yyyMMdd 这种形式用了……

正文完
 0