json编码时间中可变数量的子秒

时间:2016-04-18 05:55:40

标签: json go time go-gorm

所以我有很多结构扩展了gorm模型意味着他们已经创建了,更新了和删除了time.Time字段。当我将这些编组成JSON时,我收到的日期格式各不相同。它应该生成的正确RFC3339时间戳如下所示:

2016-04-18T00:03:20Z

但是,我只会在20%的时间内以这种方式格式化日期。其余时间戳具有可变数量的亚秒。我收到了以下格式:

2016-04-18T05:第51:11.54772087Z

2016-04-18T05:51:11.543835101Z

2016-04-18T05:53:20.1674444Z

我有什么方法可以强制进入给我一致的时间戳吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

控制输出的最佳方法是编写自己的类型。说出type MyTime time.Time,并为您的格式设置MarshallerUnmarshaller。有关提示,请参阅time.MarshalJSONtime.UnmarshalJSON。如果您在数据库列中需要这个,请同时实现ScannerValuersee this answer)。对于其他Marshaller / Unmarshaller你需要实现他们的接口(例如yaml / gob /...)