其它编程语言的开发者,在第一次应用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这种形式用了……