【问题标题】:How to parse a date string in a foreign language with go time如何使用 go time 解析外语的日期字符串
【发布时间】:2018-04-10 11:06:12
【问题描述】:

所以我的问题是:我想这样做:

datestring := "19. april 2018"

parsedDate, err := time.Parse("2. January 2006", datestring)
if err != nil {
    fmt.Println(err)
}

fmt.Println(parsedDate)

这个 sn-p 工作得很好……但现在我输入的日期字符串不是英文的……它是德文的。所以四月愚弄了我。 (德语四月 = 英语四月)。使用datestring := "19. Februar 2018" 运行失败:

parsing time "12. februar 2018" as "2. January 2006": 
    cannot parse "februar 2018" as "Januar\"

有没有办法添加可解析(自然)语言?或者定义我期望的语言。我在文档中没有找到任何提及。

谢谢!

【问题讨论】:

  • 标准库只处理英文名称,库推荐题外话。
  • 你可以把德语名字改成英文

标签: date parsing go


【解决方案1】:

我相信你想要达到的目标可以使用这个包来完成

https://godoc.org/github.com/goodsign/monday

它允许您使用ParseInLocation 函数指定要在德语区域设置中解析日期。

this question 中可以看到一个关于如何使用它(和德语)的好例子。

【讨论】:

    【解决方案2】:

    一种方法是将原始字符串中的月份从您的语言环境转换为数字或英语语言环境,然后再将其发送到 Parse() 函数。 一定会成功的。

    这是一个包含多种语言定义的 yaml 文件 - https://github.com/scrapinghub/dateparser/blob/8e91eb1a6d161a50b1869408c559dc605ef3583f/data/languages.yaml#L116

    那是python中的一个库,所以它不适合去。但是您可以使用此 yaml 文件进行转换。 取自这个答案 - https://stackoverflow.com/a/32482516/801426

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      相关资源
      最近更新 更多