如何从非英语字符串解析月份

dab*_*bai 4 time go

我想将以下字符串解析为go中的日期:

"This item will be released on March 9, 2014."
Run Code Online (Sandbox Code Playgroud)

我跟着这个,然后上来了:

func findReleaseDateString(raw string) time.Time {
  test, err := time.Parse("This item will be released on January 2, 2006.", raw)
  if err != nil {
      panic(err)
  }

 return test
}
Run Code Online (Sandbox Code Playgroud)

这就像英国字符串的魅力.

我的问题:我想解析德语字符串.喜欢:

"Dieser Artikel wird am 9. März 2014 erscheinen."
Run Code Online (Sandbox Code Playgroud)

我知道,我可以通过正则表达式匹配日,月和年,然后解析它.但有没有可能告诉time.Parse使用一组不同的常量

ANi*_*sus 6

目前没有i18n支持时间包.在等待这种情况发生时,您可以尝试使用包装程序包,例如:

github.com/goodsign/monday

正如monday文件所述:

星期一不是标准时间套餐的替代品.这是一种临时解决方案,在国际化功能尚未准备就绪时使用.

这就是为什么星期一不会创建任何额外的解析算法,布局标识符.它只是time.Format和time.ParseInLocation的包装器,并使用所有相同的布局ID,常量等.

以下是您使用的示例monday:

package main

import (
    "fmt"
    "github.com/goodsign/monday"
    "time"
)

func findReleaseDateString(raw string) time.Time {
    loc, _ := time.LoadLocation("Europe/Berlin")
    t, err := monday.ParseInLocation("Dieser Artikel wird am 2. January 2006 erscheinen.", raw, loc, monday.LocaleDeDE)
    if err != nil {
        panic(err)
    }

    return t
}

func main() {
    t := findReleaseDateString("Dieser Artikel wird am 9. März 2014 erscheinen.")
    fmt.Println(t)
}
Run Code Online (Sandbox Code Playgroud)

输出:

2014-03-09 00:00:00 +0100 CET