时间类型处理

实际项目中,根据时间搜索,存生日,很多用到时间的.
第一: 传时间类型的值
后台的字段类型为: Date 类型
想要接收前台的时间类型数据 :
前台传入一般有三种传入方式 :
一个时间对象,一个时间戳,或者是一个字符串.
而实际上传入到后台的时候,都是以字符串的形式的形式走的.
当后台定义为Date时间类型的时候,并且没有加注解,默认的格式是这样子的:
“2020-10-31T16:00:00.000Z” (文中双引号被编辑器转成了中文的符号)
这个样子的格式才能被后台解析到,不然抛异常: HttpMessageNotReadableException
这个是因为解析参数出现错误,无法把传入的参数给正确的转化为时间格式.
如果加了注解,就可以跟前端约定格式,然后按照约定的格式传入,是可以正常接收的.但是格式信息必须要对应.
例如: @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)这个样子
pattern里面是格式.可以更改为自己想要的样子.
总的来说,就是前后端传时间类型的值,那么格式一定要能对应上.

第二: 返回时间类型的值 :
1: 默认返回时间戳
2: 如果加了注解,就可以解析为字符串输出出去. 而@JsonFormat这个注解,出入都可以转化为同一种格式. 这个用着就不错.
3: 如果返回的是一个对象的话,而时间对象只是其中一个字段.上面都是对的,
但是如果仅仅返回的只是一个时间对象的话,返回的只是时间戳.

PS(重要) :
1: 使用@JsonFormat时,如果前端传入的是空字符串,后端不会报错,对应字段会被解析为null.
不传也不会报错,后端依旧解析对应字段为null.
所以如果不需要传时间,那么前端不传,或者传入空字符串都是可以的.

2: 前端传入时间戳,不会报错,但是时间会转化错误,会直接被转化为1970年的某一天.

所以:
目前最好的方式还是: 使用@JsonFormat注解,约定好格式,让前端传入对应格式的字符串.如果不需要传值,就不传.
如果时间类型不需要处理: 那么直接就传时间对象也是极好的.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值