使用Converter将url中的 long类型的日期转换为 LocalDataTime

场景:对于前端传递过来的数据(GET),比如 Long类型的日期,希望在后台直接获取到LocalDataTime的数据,可以采用Converter来做转化。

例子:

@Component
public class String2LocalDataTimeConverter implements Converter<String,LocalDateTime> {

    Pattern pattern = Pattern.compile("^([0-9]{13})$");

    @Override
    public LocalDateTime convert(String source) {
        //只对get方式的url上的参数有意义
        Matcher matcher = pattern.matcher(source);
        if(matcher.matches()) {
            Long time = Long.parseLong(source);
            return Instant.ofEpochSecond(time).atOffset(ZoneOffset.of("+08:00")).toLocalDateTime();
        }
        /**
         * 抛出异常表示此转化器不适用,会使用另外一个转化器
         */
        throw  new RuntimeException();
    }
}
Controller:如下:

@Slf4j
@RestController
@RequestMapping(value = "/sample")
public class SampleController {


    @Resource
    private SampleService sampleService;

    @ResponseBody
    @RequestMapping(value = "test")
    public String test(TestConver testConver) {
        System.out.println(testConver);
        return testConver.toString();
    }
}
TesrConver如下:

@Data
public class TestConver {
    private LocalDateTime time;
    private String name;
}
测试



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值