将 RFC3339 字符串解析为时间时无法将时间解析为 T

Cannot parse time as T when parsing RFC3339 string to time

我有一个来自 db 的字符串,比如

dbString := "2020-03-16 14:46:13 +0530 IST"

我的要求是将此字符串作为 Timestamptz 插入另一个 table

我正在尝试将 dbString 转换为时间

timeToBeInserted := time.Parse(time.RFC3339,t.VO.DateLastModified)

我看到以下错误

+0000 UTC parsing time "2020-03-16 14:46:13 +0530 IST" as "2006-01-02T15:04:05Z07:00": cannot parse " 14:46:13 +0530 IST" as "T"

您的日期字符串不符合 RFC3339 格式:

RFC3339     = "2006-01-02T15:04:05Z07:00"

您应该使用自定义格式。以下一个适用于您的字符串:

dbString := "2020-03-16 14:46:13 +0530 IST"
fmt.Println(time.Parse("2006-01-02 15:04:05 -0700 MST", dbString))


// Output:
// 2020-03-16 14:46:13 +0530 IST <nil>

您的时间字符串不是 RFC3339 格式,所以不要告诉 time.Parse 它是。而是使用

time.Parse("2006-01-02 15:04:05 -0700 MST", t.VO.DateLastModified)