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

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

例子:

@Component
public class String2LocalDataTimeConverter implements Converter {

    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;
}
测试
使用Converter将url中的 long类型的日期转换为 LocalDataTime_第1张图片


你可能感兴趣的:(使用Converter将url中的 long类型的日期转换为 LocalDataTime)