当前位置: 首页 > 面试题库 >

从字符串获取整数月份值

徐高韵
2023-03-14
问题内容

我正在从AWS解析一个cron字符串,看起来像这样cron(0 7 13 November ? 2019)。有没有一种干净的方法可以November追溯到11使用Go的内置类型?该time.Month类型允许映射intstring,但似乎没有办法进行相反的操作。我想念什么吗?现在,我已经写了这个得到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已经发布了一些内容,但是进行了一些改进: 只需将文本强制转换为文本即可,无需。