首页  >  文章  >  后端开发  >  如何在 Go 中解组格式不正确的日期时间?

如何在 Go 中解组格式不正确的日期时间?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 10:43:02189浏览

How to Unmarshal Incorrectly Formatted Datetimes in Go?

解组格式不正确的日期时间

在 Go 中解组 JSON 日期时间时,当 JSON 中提供的时区偏移格式不正确时,会出现一个常见问题。根据 RFC3339,预期格式是带冒号的 02:00,但某些来源可能会将其输出为不带冒号的 0200。

自定义解组解决方案

至为了处理这种差异,可以定义一个支持两者的自定义时间字段类型格式:

此解决方案利用 UnmarshalJSON 方法首先从 JSON 字符串中删除引号。然后,它尝试使用标准 RFC3339Nano 格式解析日期时间。如果失败,它会回退到解析修改后的格式,从时区偏移量中删除冒号。

结构集成

要将此类型集成到结构中,请定义它为:

这允许将 JSON 解组到 Test 结构中,并填充 Time 字段具有正确的日期和时间,无论时区偏移是否以冒号分隔。

时间格式注意事项

在中使用 2006 年时间格式字符串是 Go 最初版本的历史产物。它没有实际意义,不会影响日期时间的正确性或格式。

以上是如何在 Go 中解组格式不正确的日期时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn