我通过这种方式将日期转换为字符串:
d.Format("Mon 02. Jan")
Run Code Online (Sandbox Code Playgroud)
我得到类似的东西
Fri 27. Jan
Run Code Online (Sandbox Code Playgroud)
如何切换语言环境并使用其他语言获取字符串?
您可以使用替换程序来快速解决该问题。\n德语示例:
\n\nr := strings.NewReplacer(\n "January", "Januar",\n "February", "Februar",\n "March", "M\xc3\xa4rz",\n "April", "April",\n "May", "Mai",\n "June", "Juni",\n "July", "Juli",\n "August", "August",\n "September", "September",\n "October", "Oktober",\n "November", "November",\n "December", "Dezember", )\n\n\ntime := inputTime.Format("2 January 2006")\n\noutputString := r.Replace(time)\nRun Code Online (Sandbox Code Playgroud)\n
你不能.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] }
Run Code Online (Sandbox Code Playgroud)
同样,工作日的名称来自Weekday.String(),存储在未导出的变量中time.days.
话虽如此,可能有第三方图书馆支持您的需求.这是一个不完整的,可能对你有所帮助:https://github.com/mattbaird/go-i18n-formats
正如Igor Chubin在下面分享的那样,这个第三方库更加完整:https://github.com/variadico/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",
}
Run Code Online (Sandbox Code Playgroud)
测试它:
fmt.Println(Format(time.Now()))
Run Code Online (Sandbox Code Playgroud)
Ked 10. Nov
Run Code Online (Sandbox Code Playgroud)
我本地机器上的输出:
Pén 27. Jan
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |