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