如何在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")
我有一个文件,可以有日期修改值与日期或日期时间的格式。我曾将该值解析为: 现在,字符串也可以是
问题内容: 可以说我有以下json 我想将其解码为以下结构 像这样 这给了我错误 如果我要手动解析它,我会这样做 但是,当时间值来自json字符串时 ,我如何使解码器以上述格式解析它? 问题答案: 在这种情况下,您需要实现自定义编组和非编组功能。 通过遵循json包的Golang文档中的示例,您将获得以下内容:
本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。 例子 : 解析日期/时间字符串 实例的代码如下: package chapter8; import java.text.DateFormat; import java.util.Date; import ja
我有一个格式化的字符串日期 2020/04/16 (年/月/日) 我想把这个字符串解析成日期时间 显然不起作用,没有正确的日期格式。 有人知道把这个字符串解析成日期时间的最好方法是什么吗?
我有一个变量,它包含以下值: 我目前正在使用以下代码将其格式化为字符串:.使用此代码,我得到以下值: 我需要这个更准确。我想要得到的精确值在以下精度范围内: 我在以下链接上做了一些研究:http://www.w3.org/TR/NOTE-datetime 以下是我的发现: 此配置文件没有指定可以使用多少位数来表示每秒的小数部分。允许分数秒的采用标准必须规定最小位数(大于或等于一的数字)和最大位数(
问题内容: 我有一个日期字符串,格式为“ 2020年2月15日星期一”。我想将格式更改为。我怎样才能做到这一点? 问题答案: 模块可以帮助你: 对于特定示例,你可以执行