解析非“标准”格式的日期/时间字符串

如何在Go中解析非标准的日期/时间字符串。例如,如果我想将字符串10/15/1983转换为time.Time?该time.Parse()功能应该允许您指定格式。

http://play.golang.org/p/v5DbowXt1x

package main

import "fmt"

import "time"

func main() {

test, err := time.Parse("10/15/1983", "10/15/1983")

if err != nil {

panic(err)

}

fmt.Println(test)

}

这导致了恐慌。

panic: parsing time "10/15/1983" as "10/15/1983": cannot parse "" as "0/"

从逻辑上讲这是有道理的,因为它应该如何知道哪一天和哪一个月。

其他语言具有类似于以下功能:

parse("mm/dd/yyyy", "10/15/1983")

我在Go文档中找不到这样的功能,我唯一选择正则表达式吗?

回答:

time.Parse正在寻找一些关键值。

通过更改:

test, err := time.Parse("10/15/1983", "10/15/1983")

test, err := time.Parse("01/02/2006", "10/15/1983")

解析器将识别出它。

这是操场上修改后的代码。

package main

import "fmt"

import "time"

func main() {

test, err := time.Parse("01/02/2006", "10/15/1983")

if err != nil {

panic(err)

}

fmt.Println(test)

}

您可以利用src / pkg / time /

format.go文件中的常量列表来创建自己的解析格式。

const (

stdLongMonth = "January"

stdMonth = "Jan"

stdNumMonth = "1"

stdZeroMonth = "01"

stdLongWeekDay = "Monday"

stdWeekDay = "Mon"

stdDay = "2"

stdUnderDay = "_2"

stdZeroDay = "02"

stdHour = "15"

stdHour12 = "3"

stdZeroHour12 = "03"

stdMinute = "4"

stdZeroMinute = "04"

stdSecond = "5"

stdZeroSecond = "05"

stdLongYear = "2006"

stdYear = "06"

stdPM = "PM"

stdpm = "pm"

stdTZ = "MST"

stdISO8601TZ = "Z0700" // prints Z for UTC

stdISO8601ColonTZ = "Z07:00" // prints Z for UTC

stdNumTZ = "-0700" // always numeric

stdNumShortTZ = "-07" // always numeric

stdNumColonTZ = "-07:00" // always numeric

)

因此,只要您的格式指定年份,就应使用“ 06”或“ 2006”完成,用“ 05”或“ 5”指定秒,并在“ MST”,“ Z0700”,“

Z07:00”中指定时区”,“-0700”,“-07”或“ -07:00”。如果您引用常量列表,则可以将需要解析的任何标准格式组合在一起。

例如,如果要以“

通用日志格式”(Apache的日志文件)格式解析日期/时间,可以通过将以下字符串time.Parse()作为

布局 参数传递来实现。

"02/Jan/2006:15:04:05 -0700"

“ 02”表示月份的日期字段,“ Jan”表示月份的名称字段,“ 2006”表示年份的字段,“ 15”表示24小时格式的一天中的小时字段,“

04”表示分钟的字段, “ 05”表示秒字段,“-0700”表示时区字段。

该格式将解析当前的PST时间: 31/Dec/2012:15:32:25 -0800

因此,time.Parse()调用将如下所示:

test, err := time.Parse("02/Jan/2006:15:04:05 -0700", "31/Dec/2012:15:32:25 -0800")

以上是 解析非“标准”格式的日期/时间字符串 的全部内容, 来源链接: utcz.com/qa/416887.html

回到顶部