我用以下方法将日期转换为字符串:
d.Format("Mon 02. Jan")
我会得到这样的结果
Fri 27. Jan
如何切换区域设置并获取其他语言的字符串?
ijxebb2r1#
不能,Go语言的标准库中没有本地化的月份、日期和时区名称,这些名称都是绑定到time包中的。例如,Month.String()返回的月份名称存储在未导出的time.month全局变量中:
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在下面分享的,这个第三方库要完整得多:https://github.com/klauspost/lctime还要注意,虽然提供一个通用的多语言时间格式化包并不是一件容易的事情,但是如果您确实需要它,您可以使用time包,将它复制到您的项目中,然后将名称翻译成您需要的语言。还请注意,由于支持的语言和布局数量较少,您可以轻松地自行创建格式。例如,下面的代码使用您在问题中使用的布局,以匈牙利语格式化给定的time.Time值:
Weekday.String()
time.days
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()))
Go Playground上的输出:
Ked 10. Nov
本地计算机上的输出:
Pén 27. Jan
sgtfey8w2#
您可以使用替代项作为问题的快速修复。德语示例:
r := strings.NewReplacer( "January", "Januar", "February", "Februar", "March", "März", "April", "April", "May", "Mai", "June", "Juni", "July", "Juli", "August", "August", "September", "September", "October", "Oktober", "November", "November", "December", "Dezember", ) time := inputTime.Format("2 January 2006") outputString := r.Replace(time)
2条答案
按热度按时间ijxebb2r1#
不能,Go语言的标准库中没有本地化的月份、日期和时区名称,这些名称都是绑定到
time
包中的。例如,
Month.String()
返回的月份名称存储在未导出的time.month
全局变量中:类似地,工作日的名称来自
Weekday.String()
,存储在未导出的变量time.days
中。话虽如此,可能有第三方库支持您的需求。这里有一个不完整的库,可能会对您有所帮助:https://github.com/mattbaird/go-i18n-formats
正如Igor Chubin在下面分享的,这个第三方库要完整得多:https://github.com/klauspost/lctime
还要注意,虽然提供一个通用的多语言时间格式化包并不是一件容易的事情,但是如果您确实需要它,您可以使用
time
包,将它复制到您的项目中,然后将名称翻译成您需要的语言。还请注意,由于支持的语言和布局数量较少,您可以轻松地自行创建格式。
例如,下面的代码使用您在问题中使用的布局,以匈牙利语格式化给定的
time.Time
值:测试:
Go Playground上的输出:
本地计算机上的输出:
sgtfey8w2#
您可以使用替代项作为问题的快速修复。德语示例: