格式化 JSON 编码的时间戳
在使用 Go 时,可能会遇到需要格式化 time.Time 类型输出的时间戳。默认情况下,JSON 将时间编组为 RFC3339,从而导致格式不理想。
自定义时间戳格式
要自定义时间戳格式,请为自定义时间类型实现 Marshaler 接口:
1 2 3 4 5 6 7 8 9 10 11 | import (
"encoding/json"
"fmt"
)
type JSONTime time.Time
func (t JSONTime) MarshalJSON() ([]byte, error) {
stamp := fmt.Sprintf( "\"%s\"" , time.Time(t).Format( "Mon Jan _2" ))
return []byte(stamp), nil
}
|
登录后复制
将此自定义类型应用于您的文档struct:
1 2 3 4 5 6 | type Document struct {
Name string
Content string
Stamp JSONTime
Author string
}
|
登录后复制
编组时,您可以将 Document 实例初始化为:
1 | testDoc := model.Document{ "Meeting Notes" , "These are some notes" , JSONTime(time.Now()), "Bacon" }
|
登录后复制
生成的 JSON 现在将具有您所需格式的格式化时间戳,例如“May 2014 年 15 日”。
以上是如何在 Go 的 JSON 编码中自定义时间戳格式?的详细内容。更多信息请关注PHP中文网其他相关文章!