
在 Go 中,使用 time.Now().Format("02-01-2006") 即可将当前日期格式化为 dd-mm-yyyy(如 05-04-2024),关键在于 Go 独特的参考时间布局字符串,而非传统占位符。
在 go 中,使用 time.now().format("02-01-2006") 即可将当前日期格式化为 dd-mm-yyyy(如 05-04-2024),关键在于 go 独特的参考时间布局字符串,而非传统占位符。
Go 的时间格式化不采用常见的 %d-%m-%Y 或 {dd}-{MM}-{yyyy} 语法,而是基于一个固定的“参考时间”:
Mon Jan 2 15:04:05 MST 2006(即 Unix 时间戳 1136239445)。
其中每个数字对应特定含义:
-
02→ 日(day of month,两位数,补零) -
01→ 月(month,两位数,补零) -
2006→ 四位年份(year)
因此,要输出 dd-mm-yyyy(如 15-08-2023),必须使用布局字符串 "02-01-2006" —— 注意顺序是 日-月-年,且 02 表示日、01 表示月,不可颠倒或替换为 dd/mm。
✅ 正确示例:
package main
import (
"fmt"
"time"
)
func main() {
today := time.Now()
formatted := today.Format("02-01-2006")
fmt.Println(formatted) // 输出示例:12-07-2024
}
⚠️ 常见误区提醒:
- ❌
"%d-%m-%Y"会 panic:Go 不支持 C/Python 风格的格式动词; - ❌
"dd-mm-yyyy"会被原样输出,因 Go 只识别参考时间中的具体数字作为占位符; - ❌
"2-1-2006"会导致无前导零(如5-7-2024),不符合dd-mm-yyyy要求 —— 务必用02和01保证两位补零。
? 扩展提示:若需带时区或 UTC 时间,可用 time.Now().UTC().Format("02-01-2006");若需固定时区,建议通过 time.LoadLocation 显式指定,避免依赖本地时钟。
总结:Go 的时间格式化是“布局驱动”的,牢记参考时间 02-01-2006 是掌握日期格式化的钥匙 —— 它既是示例,也是唯一契约。











