首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String date to date

String date to date
EN

Stack Overflow用户
提问于 2016-06-21 15:14:11
回答 2查看 31.1K关注 0票数 14

如何将字符串日期格式转换为日期,我有日期字符串的格式为

代码语言:javascript
复制
YYYY-MM-DD 

我试过了,但没有成功。

代码语言:javascript
复制
t, err := time.Parse("%Y-%m-%d", "2011-01-19")
t, err := time.Parse("YYYY-MM-DD", "2011-01-19")
t, err := time.Parse("2016-01-20", "2011-01-19")

以上所有语句都给出了解析错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-21 15:20:21

请阅读time.Parse的文档

布局通过显示如何定义参考时间来定义格式

Mon 2 15:04:05 -0700 MST 2006

如果它是值,则将被解释;它用作输入格式的示例。然后,将对输入字符串进行相同的解释。

所以正确的格式是

代码语言:javascript
复制
t, err := time.Parse("2006-01-02", "2011-01-19")
票数 31
EN

Stack Overflow用户

发布于 2018-05-28 09:15:37

除了使用文字2006-01-02时间格式之外,您还可以通过创建一个类似于Go在time包中执行此操作的常量来减少错误。

YYYY-MM-DD格式在RFC-3339中定义为full-date,如下所示(调整顺序):

代码语言:javascript
复制
full-date       = date-fullyear "-" date-month "-" date-mday
date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                          ; month/year

因此,您可以创建一个与内置time.RFC3339time.RFC3339Nano常量一起使用的常量,如下所示。

代码语言:javascript
复制
const RFC3339FullDate = "2006-01-02"

然后,您可以编写以下代码:

代码语言:javascript
复制
t, err := time.Parse(RFC3339FullDate, "2011-01-19")

这是在gotilla/time/timeutil包中,所以你可以这样写:

代码语言:javascript
复制
t, err := time.Parse(timeutil.RFC3339FullDate, "2011-01-19")

作为参考,time/format.go包含以下常量:

代码语言:javascript
复制
const (
    ANSIC       = "Mon Jan _2 15:04:05 2006"
    UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
    RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
    RFC822      = "02 Jan 06 15:04 MST"
    RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
    RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
    RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
    RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
    RFC3339     = "2006-01-02T15:04:05Z07:00"
    RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
    Kitchen     = "3:04PM"
    // Handy time stamps.
    Stamp      = "Jan _2 15:04:05"
    StampMilli = "Jan _2 15:04:05.000"
    StampMicro = "Jan _2 15:04:05.000000"
    StampNano  = "Jan _2 15:04:05.000000000"
)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37937794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档