我正在从AWS解析一个cron字符串,看起来像这样cron(0 7 13 November ? 2019)
。有没有一种干净的方法可以November
追溯到11
使用Go的内置类型?该time.Month
类型允许映射int
到string
,但似乎没有办法进行相反的操作。我想念什么吗?现在,我已经写了这个得到map[string]int
我使用这样的:monthi := getMonths()[monthName]
。
func getMonths() map[string]int {
m := make(map[string]int)
for i := 1; i < 13; i++ {
month := time.Month(i).String()
m[month] = i
}
return m
}
前言:
我在中发布了此实用程序github.com/icza/gox
,请参见timex.ParseMonth()
。
这是目前最好的方法。
最好的方法是使用包级变量,并且仅填充一次地图。
通过这种方式进行人口调查更加干净和安全:
var months = map[string]time.Month{}
func init() {
for i := time.January; i <= time.December; i++ {
months[i.String()] = i
}
}
测试它:
for _, s := range []string{"January", "December", "invalid"} {
m := months[s]
fmt.Println(int(m), m)
}
输出(在Go Playground上尝试):
1 January
12 December
0 %!Month(0)
请注意,此映射具有灵活性,您可以添加短月份名称,以映射到同一月份。例如,您也可以添加months["Jan"] = time.January
,因此,如果您的输入是"Jan"
,您也可以获取time.January
。可以通过在同一循环中对长名称进行切片来轻松完成此操作,例如:
for i := time.January; i <= time.December; i++ {
name := i.String()
months[name] = i
months[name[:3]] = i
}
另请注意,可以time.Parse()
在布局字符串为的地方进行解析"January"
:
for _, s := range []string{"January", "December", "invalid"} {
t, err := time.Parse("January", s)
m := t.Month()
fmt.Println(int(m), m, err)
}
哪些输出(在Go Playground上尝试):
1 January <nil>
12 December <nil>
1 January parsing time "invalid" as "January": cannot parse "invalid" as "January"
但是,简单的地图查找在性能上胜于此。
问题内容: 有没有更好的方法来压缩此方法,即通过避免切换情况来降低圈复杂度? 问题答案: 尝试: 另外,您可以使用SimpleDateFormat: (要使用第二个选项,您必须在对象中添加日期和月份)。
问题内容: 如何从Date对象()中将月份作为整数? 问题答案: 您还可以使用Java 8中的java.time包并将您的对象转换为对象,然后仅使用方法。 请注意,此处的月份值是1到12,与adarshr的答案相反,月份值是0到11。 但是正如Basil Bourque在评论中所说,首选方法是使用该方法获取枚举对象。
问题内容: 如何将月份字符串转换为整数? 在单击方法上,我想显示选定的日期,但是如果该日期有一个事件,它应该显示有关该事件的更多信息。检查假日事件的方法需要整数值。 这是代码: 更新: 问题答案: 看到 IDE一演示
问题内容: 所以我可以这样做: 但是我找不到办法。我想做类似的事情: 这也不起作用: 问题答案: Swift 2.0 您可以使用构造函数初始化Integer
我有相同格式的不同唯一字符串。字符串看起来像这样,我想从这个字符串中获取唯一的整数值。每次这个值都必须相同,并且依赖于字符串。我尝试将字符串的每个字符转换为int,然后将字符彼此相加。但如果我有两个字符串具有相同的一组符号,它返回的整数值彼此相等。所以不适合我。如何从唯一字符串生成唯一整数值? 更新: 考虑了所有给定的解决方案后,我决定创建函数,生成唯一的整数值。我希望它能排除碰撞。
问题内容: 我有一个带有列()的表。在这个专栏中,我存储值一样。 但是我必须出示月份 名称 。 例如:如果值是我需要显示。 问题答案: 基本上,@ small_duck已经发布了一些内容,但是进行了一些改进: 只需将文本强制转换为文本即可,无需。