我以这种方式将日期转换为字符串:
d.Format("Mon 02. Jan")
我得到像
这样的东西Fri 27. Jan
如何切换语言环境并以其他语言获取字符串?
答案 0 :(得分:5)
你做不到。 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在下面分享的那样,这个第三方lib更加完整: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",
}
测试它:
fmt.Println(Format(time.Now()))
Go Playground上的输出:
Ked 10. Nov
我本地机器上的输出:
Pén 27. Jan
答案 1 :(得分:0)
您可以将替换程序用作该问题的快速修复。 德语示例:
Sub testStackOverflow()
Dim myrange As Range
Dim Criteria1 As String
Dim Criteria2 As String
Dim Criteria3 As String
Dim Criteria4 As String
Set myrange = Worksheets("Sheet2").Range("A1:A50")
Criteria1 = "Monitors"
Criteria2 = "Jul-19"
Criteria3 = "1"
Criteria4 = "P"
For Each SearchCell In myrange
Debug.Print SearchCell.Value
If SearchCell.Value = Criteria1 Then
If SearchCell.Offset(0, 1).Value = Criteria2 Then
If SearchCell.Offset(0, 2).Value = Criteria3 Then
If SearchCell.Offset(0, 4).Value = Criteria4 Then
LastRow = Sheets("Sheet5").Range("A1048576").End(xlUp).Row + 1
Sheets("Sheet5").Range("A" & LastRow).Value = SearchCell.Value
Sheets("Sheet5").Range("B" & LastRow).Value = SearchCell.Offset(0, 1).Value
Sheets("Sheet5").Range("C" & LastRow).Value = SearchCell.Offset(0, 2).Value
Sheets("Sheet5").Range("D" & LastRow).Value = SearchCell.Offset(0, 3).Value
Sheets("Sheet5").Range("E" & LastRow).Value = SearchCell.Offset(0, 4).Value
End If
End If
End If
End If
Next SearchCell
End Sub