我是靠谱客的博主 现代招牌,最近开发中收集的这篇文章主要介绍mysql error parsing_Go 解析日期格式-解决 parsing time xx as xx: cannot parse xx as xx 错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在解析 Go 的日期数据格式时(mysql 的 datetime 类型)时遇到个问题,在网上搜了很多方案都试了以后发现不可行,于是自己尝试解决后将解决方案发布出来。【结尾有彩蛋】

Go 自身的 time.Time 类型默认解析的日期格式是 RFC3339 标准,也就是 2006-01-02T15:04:05Z07:00 的格式。如果我们想要在 Gin 的 shouldBindJSON 方法中,传入 YYYY-MM-DD hh:mm:ss 格式的日期格式作为 time.Time 类型的值,就会引发类似于 parsing time xx as xx: cannot parse xx as xx 的报错信息。这是因为 time.Time 类型默认支持的日期格式与我们传入的格式不同,导致解析出错。。

遇到这个问题后,我在网上找了很多方案,发现都失败了。有的可以完成正常解析,但是无法正确写入到数据库。有的可以正常写入和写出,但是会使得 gin 自带的验证规则如 binding:"required" 规则失效,失去校验的功能。

自定义 LocalTime 类型

解决这个问题的关键就是解决 c.ShouldBindJSON 和 gorm.Updates 的问题,我们需要定义一个新的 Time 类型和自定义的日期格式解析(如下),并将我们的 struct 结构体 datetime 字段指定为我们自定义的类型(如下)

自定义 LocalTime 类型

// model.LocalTime

package model

const TimeFormat = "2006-01-02 15:04:05"

type LocalTime time.Time

业务代码结构

// You Application S

最后

以上就是现代招牌为你收集整理的mysql error parsing_Go 解析日期格式-解决 parsing time xx as xx: cannot parse xx as xx 错误的全部内容,希望文章能够帮你解决mysql error parsing_Go 解析日期格式-解决 parsing time xx as xx: cannot parse xx as xx 错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部