猿问

动态解析日期

我有一个案例,我可以单独拥有日期或日期+时区。因此,当我像这样用时区解析它时


dateString := "2021-03-11T00:00:00Z"

time1, _ := time.Parse(time.RFC3339,dateString);

   

fmt.Println(time1);

 

它给出了准确的答案,但当我动态地它变得像Date


dateString := "2021-03-11"

time1, _ := time.Parse(time.RFC3339,dateString);

   

fmt.Println(time1);   //gives this 0001-01-01 00:00:00 +0000 UTC

而在这两种情况下,我只想要像这样的日期“2021-03-11”。实现此目标的最佳方法是什么


桃花长相依
浏览 83回答 1
1回答

慕森王

要仅解析日期,可以使用“2006-01-02”作为布局。time.Parse请参阅官方文档,了解这些布局的处理方式和预期内容。time.Parse正如@zerkms在评论中所说的那样,如果您检查错误,您将知道它是否成功,因此您可以尝试其他方法。粗略代码草图:time.ParsedateString := "2021-03-11"time1, err := time.Parse(time.RFC3339, dateString)if err != nil {    time1, err = time.Parse("2006-01-02", dateString)    if err != nil {        log.Fatal("cannot parse using either layout:", err)    }}fmt.Println(time1)在现实生活中,我可能会把它包装在一个函数中,该函数在放弃并返回错误之前尝试以两种方式解析。
随时随地看视频慕课网APP

相关分类

Go
我要回答