前端用time-picker选择的timestamp利用JSON传到后端,是为一长段数字的String类型的字段,后端接口利用Timestamp读的时候,nested exception is org

完整报错:

2021-08-10 19:13:45.756  WARN 9104 --- [nio-9000-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.sql.Timestamp'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.sql.Timestamp] for value '1628179200000'; nested exception is java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]]

问题分析:前端利用JSON传到后端的时候,属于是String类型,但是后端是利用Timestamp接收的,所以他分析不出来这个String类型的。

所以想到可以后端接口用String接收,然后将String类型的在后端转换为Timestamp类型的再进行后续的过程。代码如下

        Timestamp t1 = Timestamp.valueOf(workplantime);
        Timestamp t2 = Timestamp.valueOf(planfinishtime);

但是,后端又报错 格式错误

java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

===========终于解决了 啊啊啊啊啊

问题分析:

Timestamp.valueOf(***)

这个valueOf函数的里面应该是"YYYY-MM-DD HH:mm:ss"这样的字符串,而我给他的的字符串是一长段数字'1628179200000',所以他自然会报错

解决办法

思考加查阅资料得,因此后端还是接收前端的String类型,然后将这个String类型转换为Long类型,可以将Long类型的13位毫秒时间撮变成Timestamp类型,代码如下

public String getberthplanList(QueryInfo queryInfo, String workplantime, String planfinishtime){
        long time1 = Long.valueOf(workplantime);
        long time2 = Long.valueOf(planfinishtime);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timestart = df.format(time1);
        Timestamp ts = Timestamp.valueOf(timestart);
        String timeend = df.format(time2);
        Timestamp te = Timestamp.valueOf(timeend);
        return portService.getberthplanList(queryInfo,ts,te);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值