自定义日期转换器

// 方法一
import org.springframework.core.convert.converter.Converter;

import java.time.LocalDateTime;

// 日期转换器
// 将 2022-10-14T19:59:24 格式转换成   LocalDateTime
public class DateConvertor implements Converter<String,LocalDateTime>{
    @Override
    public LocalDateTime convert(String source) {
        return LocalDateTime.parse(source);
    }
}
// 方法二

import org.springframework.core.convert.converter.Converter;

import java.time.LocalDate;

public class DateConvertor implements Converter<String, LocalDate> { //String, LocalDate (两个参数,一个入参类型,一个是返回参数类型)
    // yyyy-mm-dd  转换成 localDateTime
    @Override
    public LocalDate convert(String source) {
        final String[] split = source.split("//D+");
        try {
            int year = Integer.parseInt(split[0]);
            int month = Integer.parseInt(split[1]);
            int day = Integer.parseInt(split[2]);
            return LocalDate.of(year, month, day);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

定义完日期消息转换器后,要在启动类上实现WebMvcConfig,且要在启动器上进行注册

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在EasyExcel 3版本中,可以通过实现com.alibaba.excel.converters.Converter接口来自定义日期转换器。具体来说,可以通过重写Converter接口中的convertToJavaData()方法来实现将字符串转换成LocalDateTime类型的功能。在该方法中,我们可以使用Java 8中的DateTimeFormatter类来解析不同格式的日期字符串,然后将其转换成LocalDateTime对象。 下面是一个示例代码,演示如何实现自定义日期转换器并且和DateTimeFormat注解结合使用: ```java // 自定义日期转换器 public class LocalDateTimeConverter implements Converter<LocalDateTime> { private static final DateTimeFormatter[] FORMATTERS = new DateTimeFormatter[] { DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") // 添加更多的日期格式 }; @Override public Class supportJavaTypeKey() { return LocalDateTime.class; } @Override public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { String dateString = cellData.getStringValue(); for (DateTimeFormatter formatter : FORMATTERS) { try { return LocalDateTime.parse(dateString, formatter); } catch (DateTimeParseException e) { // 如果解析失败,尝试下一个格式 } } // 如果所有格式都尝试过了,仍然解析失败,则抛出异常 throw new IllegalArgumentException("Invalid date format: " + dateString); } // 可选:如果需要将LocalDateTime对象转换成字符串输出到Excel中,可以重写convertToExcelData()方法 @Override public CellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { // TODO: 实现将LocalDateTime对象转换成字符串的逻辑 return null; } } // 使用自定义日期转换器,并且和DateTimeFormat注解结合使用 public class MyData { @DateTimeFormat("yyyy/MM/dd HH:mm:ss") @ExcelProperty("日期") private LocalDateTime date; // getter和setter方法省略 } // 在读取Excel时,需要注册自定义日期转换器 ExcelReader reader = ExcelReaderFactory.getReader(inputStream); reader.setConverterRegistry(ConverterRegistry.getInstance()); ConverterRegistry.getInstance().addConverter(new LocalDateTimeConverter()); // 在写入Excel时,不需要注册自定义日期转换器,因为EasyExcel内置了对LocalDateTime的支持 ExcelWriter writer = EasyExcel.write(outputStream, MyData.class).build(); ``` 在上面的示例代码中,我们定义了一个LocalDateTimeConverter类来实现自定义日期转换器。在该类中,我们使用了一个DateTimeFormatter数组来存储不同的日期格式,然后在convertToJavaData()方法中依次尝试解析日期字符串,直到找到匹配的格式为止。如果所有格式都尝试过了,仍然解析失败,则抛出IllegalArgumentException异常。 同时,我们还定义了一个MyData类,并且在其中使用了@DateTimeFormat注解来指定日期格式。在读取Excel时,我们需要将自定义日期转换器注册到转换器注册表中;在写入Excel时,由于EasyExcel内置了对LocalDateTime的支持,因此不需要注册自定义日期转换器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值