r := gin.Default()
r.GET("/time", func(c *gin.Context) {
c.JSON( http.StatusOK, gin.H{
"now": time.Now(),
})
})
返回
{
"now": "2022-11-17T14:31:44.6111772+08:00"
}
就想定义 now 为 time.Time 不想定义为 string 然后 format
有 2 个疑问
jackson:
date-format: yyyy-MM-dd HH:mm:ss
直接全局替换
1
wunonglin 2022-11-17 14:44:27 +08:00
time.Now().Format("22006-01-02 15:04:05")
|
2
chenqh 2022-11-17 14:45:27 +08:00
写个返回 NowTimeStr 的函数?
|
3
rrfeng 2022-11-17 15:15:10 +08:00
就想定义 now 为 time.Time 不想定义为 string 然后 format
--------- 你想马儿跑还不给吃草?? 总要改一个地方。 可以这样: type MyTime time.Time func(mt *MyTime) Marshal() ([]byte,error) { 返回你想要的格式 } 然后 json 里定义 now 为 MyTime 类型。 |
6
CEBBCAT 2022-11-17 17:31:48 +08:00 1
> 就想定义 now 为 time.Time 不想定义为 string 然后 format
这都哪跟哪啊? json.Marshaler 学了吗? |
7
rootliang 2022-11-17 17:32:23 +08:00 via iPhone
猜测可能是因为,json 并没有 time.Time 类型,在序列化的时候分配了默认的 String 类型,time.Time 转换为 string 的时候,会自动使用 time 实现的 string()方法,就得到了上面的结果
|
8
swulling 2022-11-17 17:45:57 +08:00 via iPhone 1
|
10
lysS 2022-11-17 18:23:14 +08:00
time.Time 就是 nano 时间戳加时区嘛。json 是要序列化成可读的啊。你不想要毫秒,就直接 parse 成字符串啊
|
11
gollwang 2022-11-18 11:02:51 +08:00
默认的 JSON 序列化用的 RFC3339Nano ,反序列化用的 RFC3339 ,不满意的话就自己重写
|