你不能。 Go 标准库不包含本地化的月份、日期和区域名称。这些名称被连接到time
包裹。
例如,返回的月份名称Month.String()存储在未导出的time.month
全局变量:
var months = [...]string{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
}
func (m Month) String() string { return months[m-1] }
同样,工作日的名称来自Weekday.String(),存储在未导出的变量中time.days
.
话虽如此,可能有第三方库支持您的需求。这是一个不完整的内容,可能对您有帮助:https://github.com/mattbaird/go-i18n-formats
正如 Igor Chubin 在下面分享的那样,这个第 3 方库更加完整:https://github.com/klauspost/lctime
另请注意,虽然提供通用的多语言时间格式包并不是一件容易的事,但如果您确实需要它,您可以采取time
包,将其复制到您的项目中,然后将名称翻译为您需要的语言。
另请注意,由于支持少量语言和少量布局,因此您可以轻松创建格式。
例如,下面的代码格式化给定的time.Time
匈牙利语值,使用您在问题中使用的布局:
func Format(t time.Time) string {
return fmt.Sprintf("%s %02d. %s",
days[t.Weekday()][:3], t.Day(), months[t.Month()-1][:3],
)
}
var days = [...]string{
"Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"}
var months = [...]string{
"Január", "Február", "Március", "Április", "Május", "Június",
"Július", "Augusztus", "Szeptember", "Október", "November", "December",
}
测试它:
fmt.Println(Format(time.Now()))
输出在去游乐场:
Ked 10. Nov
我本地机器上的输出:
Pén 27. Jan