String 从字符串中获取整月值
我正在解析AWS中的一个cron字符串,看起来像11月13日的cron0 7?2019使用go的内置类型是否有一种从11月回到11月的干净方法?time.Month类型允许将int映射到字符串,但似乎没有一种方法可以实现相反的操作。我错过什么了吗?现在,我写这篇文章是为了得到一个map[string]int,我正在使用它:monthi:=getmonthnames[monthName] 前言:我在年发布了这个实用程序,请参阅 这是目前最好的办法 最好使用包级别变量并只填充映射一次 这样做会更清洁、更安全:String 从字符串中获取整月值,string,go,time,String,Go,Time,我正在解析AWS中的一个cron字符串,看起来像11月13日的cron0 7?2019使用go的内置类型是否有一种从11月回到11月的干净方法?time.Month类型允许将int映射到字符串,但似乎没有一种方法可以实现相反的操作。我错过什么了吗?现在,我写这篇文章是为了得到一个map[string]int,我正在使用它:monthi:=getmonthnames[monthName] 前言:我在年发布了这个实用程序,请参阅 这是目前最好的办法 最好使用包级别变量并只填充映射一次 这样做会更清洁
var months = map[string]time.Month{}
func init() {
for i := time.January; i <= time.December; i++ {
months[i.String()] = i
}
}
请在以下服务器上尝试输出:
请注意,此映射具有灵活性,您可以添加短月份名称,映射到同一个月份。例如,您还可以添加months[Jan]=time.一月,因此如果您的输入是Jan,您也可以获得time.一月。这可以通过在同一循环中对长名称进行切片轻松完成,例如:
for i := time.January; i <= time.December; i++ {
name := i.String()
months[name] = i
months[name[:3]] = i
}
哪些输出可以在以下设备上试用:
但简单的映射查找在性能上优于此方法
看到类似的问题:哈哈,我一直坐在这里,在第二个监视器上打开这个问题,看着编辑滚动通过。现在它在一个实用程序中发布了!我爱你,所以。。。另外,谢谢你的帮助,做得很好!
for _, s := range []string{"January", "December", "invalid"} {
m := months[s]
fmt.Println(int(m), m)
}
1 January
12 December
0 %!Month(0)
for i := time.January; i <= time.December; i++ {
name := i.String()
months[name] = i
months[name[:3]] = i
}
for _, s := range []string{"January", "December", "invalid"} {
t, err := time.Parse("January", s)
m := t.Month()
fmt.Println(int(m), m, err)
}
1 January <nil>
12 December <nil>
1 January parsing time "invalid" as "January": cannot parse "invalid" as "January"