在Golang中将UTC时区时间转换为YYYY-MM-DD HH:MM:SS.zzzzzzz格式
在Golang中将UTC日期字符串转换为SQL Server datetime2格式
要把带UTC后缀的日期字符串转换成SQL Server可识别的datetime2格式,只需要两步:解析原始UTC时间字符串,再按目标格式输出即可,具体实现如下:
完整代码示例
package main import ( "fmt" "time" ) func main() { tStr := "2022-11-08T15:27:41.01333333Z" // 用匹配的布局字符串解析UTC时间 parsedTime, err := time.Parse("2006-01-02T15:04:05.00000000Z", tStr) if err != nil { fmt.Printf("日期解析失败: %v\n", err) return } // 格式化为SQL Server datetime2兼容的格式 sqlDateTime := parsedTime.Format("2006-01-02 15:04:05.00000000") fmt.Println(sqlDateTime) // 输出结果: 2022-11-08 15:27:41.01333333 }
关键说明
- 解析逻辑:原始字符串是标准UTC格式(带
Z后缀),使用time.Parse时,布局字符串要严格匹配输入的格式——这里用"2006-01-02T15:04:05.00000000Z"对应输入的8位小数秒结构,也可以直接用time.RFC3339Nano(它支持可变长度的小数秒),效果一致。 - 格式化逻辑:目标格式只需要把原始字符串的
T替换为空格,去掉Z后缀,所以用布局字符串"2006-01-02 15:04:05.00000000"即可直接生成datetime2可识别的表达式。 - 时区问题:输入字符串本身是UTC时间,解析后得到的
time.Time对象默认就是UTC时区,无需额外做时区转换,直接格式化就能得到正确结果。
内容的提问来源于stack exchange,提问作者Coldchain9
相关产品推荐
相关产品推荐

