如何使用go time解析外语中的日期字符串

时间:2018-04-10 11:06:13

标签: date parsing go

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

datestring := "19. april 2018"

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

fmt.Println(parsedDate)

这段代码完美无缺......但现在我的输入日期字符串不是英语......它是德语。所以四月骗了我。 (德语四月=英语四月)。使用datestring := "19. Februar 2018"运行此操作失败:

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

我相信你想要实现的目标可以使用包

来完成
  

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

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

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

答案 1 :(得分:0)

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

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

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