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 shakaraka PRO 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 ![]() > 就想定义 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 ![]() |
![]() | 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 ,不满意的话就自己重写 |