func main() { t := time.Now() fmt.Println(t.Format("3:04PM")) fmt.Println(t.Format("Jan 02, 2006")) }
When you run this you should see something like:
1:45PM Oct 23, 2021
That’s simple enough. The time package makes it even simpler because it has several layout constants that you can use directly (note those RFCs described earlier):
func main() { t := time.Now() fmt.Println(t.Format(time.UnixDate)) fmt.Println(t.Format(time.RFC822)) fmt.Println(t.Format(time.RFC850)) fmt.Println(t.Format(time.RFC1123)) fmt.Println(t.Format(time.RFC3339)) }
Here’s the output:
zzh@ZZHPC:~/zd/MyPrograms/Go/study$ go run main.go Tue Oct 24 19:22:21 CST 2023 24 Oct 23 19:22 CST Tuesday, 24-Oct-23 19:22:21 CST Tue, 24 Oct 2023 19:22:21 CST 2023-10-24T19:22:21+08:00
Besides the RFCs, there are a few other formats including the interestingly named Kitchen layout, which is just 3:04 p.m. Also if you’re interested in doing timestamps, there are a few timestamp layouts as well:
func main() { t := time.Now() fmt.Println(t.Format(time.Stamp)) fmt.Println(t.Format(time.StampMilli)) fmt.Println(t.Format(time.StampMicro)) fmt.Println(t.Format(time.StampNano)) }
Here’s the output:
zzh@ZZHPC:~/zd/MyPrograms/Go/study$ go run main.go Oct 24 19:25:23 Oct 24 19:25:23.012 Oct 24 19:25:23.012032 Oct 24 19:25:23.012032287
You might have seen earlier that the layout patterns are like this:
t.Format("3:04PM")
The full layout pattern is a layout by itself — it’s the time.Layout constant:
const Layout = "01/02 03:04:05PM 06 -0700"
As you can see, the numerals are ascending, starting with 1 and ending with 7. Because of a historic error (mentioned in the time package documentation), the date uses the American convention of putting the numerical month before the day. This means 01/02 is January 2 and not 1 February.
The numbers are not arbitrary. Take this code fragment, where you use the format “ 3:09pm ” instead of “ 3:04pm ”:
func main() { t := time.Date(2009, time.November, 10, 23, 45, 0, 0, time.UTC) fmt.Println(t.Format(time.Kitchen)) fmt.Println(t.Format("3:04pm")) // the correct layout fmt.Println(t.Format("3:09pm")) // mucking around }
This is the output:
11:45pm 11:45pm 11:09pm
You can see that the time is 11:45 p.m., but when you use the layout 3:09 p.m., the hour is displayed correctly while the minute is not. It shows :09, which means it’s considering 09 as the label instead of a layout for minute.
What this means is that the numerals are not just a placeholder for show. The month must be 1, day must be 2, hour must be 3, minute must be 4, second must be 5, year must be 6, the time zone must be -07 following by zero or more 0, and the pm can not be am.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律