easyexcel功能扩展:读取excel日期格式(包括日期格式和文本格式)

2023-11-07

 实体类属性

    @ExcelProperty(value = "时间", index = 11)
    private String time;

调用DateUtil

        DateUtil.setParams("yyyy/MM/dd","yyyy-MM-dd");
        DateUtil.formatExcelDate(ExcelImport.getTime())

DateUtil

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateUtil {

    static private MyDateFormat myDateFormat;

    static private String format = "yyyy-MM-dd";

    static private String storageFormat = "yyyy-MM-dd";

    static private boolean easy = false;

    public static MyDateFormat getMyDateFormat(String format) {
        DateUtil.myDateFormat = new MyDateFormat(format);
        return DateUtil.myDateFormat;
    }

    public static void setParams(String format, String storageFormat, boolean easy) {
        DateUtil.format = format;
        DateUtil.storageFormat = storageFormat;
        DateUtil.easy = easy;
    }

    public static void setParams(String format, String storageFormat) {
        DateUtil.format = format;
        DateUtil.storageFormat = storageFormat;
    }

    /**
     * 格式化Excel时间(yyyy-MM-dd)
     *
     * @param str
     * @return
     */
    public static String formatExcelDate(String str) {
        //数据的格式
        int yearIndex = StringUtils.indexOf(format, "yyyy");
        int monthIndex = StringUtils.indexOf(format, "MM");
        int dayIndex = StringUtils.indexOf(format, "dd");
        String year = format.substring(yearIndex + 4, monthIndex);
        String month = format.substring(monthIndex + 2, dayIndex);
        //存储的格式
        int storageYearIndex = StringUtils.indexOf(storageFormat, "yyyy");
        int storageMonthIndex = StringUtils.indexOf(storageFormat, "MM");
        int storageDayIndex = StringUtils.indexOf(storageFormat, "dd");
        String storageYear = storageFormat.substring(storageYearIndex + 4, storageMonthIndex);
        String storageMonth = storageFormat.substring(storageMonthIndex + 2, storageDayIndex);
        if (StringUtils.isBlank(str)) {
            return "";
        } else if (StringUtils.isNumeric(str)) {
            /*数字*/
            Calendar calendar = new GregorianCalendar(1900, 0, -1);
            Date gregorianDate = calendar.getTime();
            return DateUtil.getMyDateFormat(storageFormat).format(DateUtils.addDays(gregorianDate, Integer.parseInt(str)));
        } else if (str.matches("^(\\d{4}" + year + "\\d{1,2})$") && easy) {
            /*yyyy/MM*/
            Date date = DateUtil.getMyDateFormat("yyyy" + year + "MM").parse(str);
            return DateUtil.getMyDateFormat("yyyy" + storageYear + "MM").format(date);
        } else if (str.matches("^(\\d{4}" + year + "\\d{1,2}" + month + "\\d{1,2})$")) {
            /*yyyy/MM/dd*/
            Date date = DateUtil.getMyDateFormat("yyyy" + year + "MM" + month + "dd").parse(str);
            return DateUtil.getMyDateFormat("yyyy" + storageYear + "MM" + storageMonth + "dd").format(date);
        } else {
            return "";
        }
    }

    public static String formatExcelDate(String str, boolean easyTemp) {
        //数据的格式
        int yearIndex = StringUtils.indexOf(format, "yyyy");
        int monthIndex = StringUtils.indexOf(format, "MM");
        int dayIndex = StringUtils.indexOf(format, "dd");
        String year = format.substring(yearIndex + 4, monthIndex);
        String month = format.substring(monthIndex + 2, dayIndex);
        //存储的格式
        int storageYearIndex = StringUtils.indexOf(storageFormat, "yyyy");
        int storageMonthIndex = StringUtils.indexOf(storageFormat, "MM");
        int storageDayIndex = StringUtils.indexOf(storageFormat, "dd");
        String storageYear = storageFormat.substring(storageYearIndex + 4, storageMonthIndex);
        String storageMonth = storageFormat.substring(storageMonthIndex + 2, storageDayIndex);
        if (StringUtils.isBlank(str)) {
            return "";
        } else if (StringUtils.isNumeric(str)) {
            /*数字*/
            Calendar calendar = new GregorianCalendar(1900, 0, -1);
            Date gregorianDate = calendar.getTime();
            return DateUtil.getMyDateFormat(storageFormat).format(DateUtils.addDays(gregorianDate, Integer.parseInt(str)));
        } else if (str.matches("^(\\d{4}" + year + "\\d{1,2})$") && easyTemp) {
            /*yyyy/MM*/
            Date date = DateUtil.getMyDateFormat("yyyy" + year + "MM").parse(str);
            return DateUtil.getMyDateFormat("yyyy" + storageYear + "MM").format(date);
        } else if (str.matches("^(\\d{4}" + year + "\\d{1,2}" + month + "\\d{1,2})$")) {
            /*yyyy/MM/dd*/
            Date date = DateUtil.getMyDateFormat("yyyy" + year + "MM" + month + "dd").parse(str);
            return DateUtil.getMyDateFormat("yyyy" + storageYear + "MM" + storageMonth + "dd").format(date);
        } else {
            return "";
        }
    }

    /**
     * 自动填充0
     *
     * @param format
     * @param str
     * @return
     */
    public static String autoAdd0(String format, String str) {
        Date date = DateUtil.getMyDateFormat(format).parse(str);
        return DateUtil.getMyDateFormat(format).format(date);
    }

    /*日期内部类*/
    public static class MyDateFormat {
        private SimpleDateFormat simpleDateFormat;

        public MyDateFormat(String format) {
            this.simpleDateFormat = new SimpleDateFormat(format);
        }

        public String format(Date date) {
            if (date == null) {
                return "";
            } else {
                return simpleDateFormat.format(date);
            }
        }

        public Date parse(String str) {
            if (str == null) {
                return null;
            } else {
                try {
                    return simpleDateFormat.parse(str);
                } catch (ParseException e) {
                    return null;
                }
            }
        }
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

easyexcel功能扩展:读取excel日期格式(包括日期格式和文本格式) 的相关文章

随机推荐

  • 机器学习笔记-感知机对偶形式

    文章目录 前言 一 感知机对偶形式 二 感知机对偶形式的实现 总结 前言 感知机模型是有两种形式的 上一篇文章中详细学习了感知机的原始形式数学模型 我们知道 感知机应该还有对偶形式 这篇文章就来记录一下感知机对偶形式的的数学模型 一 感知机
  • Object.entries()

    Object entries 方法返回一个给定对象自身可枚举属性的键值对数组 其排列与使用 for in 循环遍历该对象时返回的顺序一致 区别在于 for in 循环还会枚举原型链中的属性 语法 Object entries obj 参数
  • 构造函数与析构函数的保护权限

    通常我们如果希望对象只在堆上创建 我们会将析构函数定义为protect或private类型 这种情况下我们还要添加一个函数来析构对象 因为此时在类外部无法使用delete释放对象 因为析构函数被保护 那么究竟为什么限制析构函数的访问权限可以
  • 下载网页视频简单的办法之一

    下载网页视频简单的办法之一 下载小网站网页视频的简单办法之一 添加插件 使用方法 局限性 下载小网站网页视频的简单办法之一 经常在小网站 比如91xxx youxxxx 上看到喜欢的小视频 想要收藏 你懂的 无赖很多都要VIP才给下载 以前
  • kali_linux (install版)移动硬盘(物理机)安装记录

    作者 瓴 时间 2023 04 23 kali linux install版 移动硬盘 物理机 安装问题记录 1 安装介绍 1 1 相关参数 2 kali 安装 2 1 制作系统启动U盘 2 2 移动硬盘分区 2 2 系统安装 2 3 引导
  • UE4_异步_数据处理(Json)

    如果一个数字城市demo 需要将第三方海量的数据进行处理展示 将数据的处理放在GameThread 上显然是不合理 这个时候需要用多线程解析数据 防止游戏线程的阻塞 关于异步和多线程 前两天面试被别人问到一个问题 异步和多线程的区别 面试的
  • 代码静态测试工具

    Ounec5 0 扫描语言VB C C C Java 属于付费工具 Coverity Prevent 扫描语言有C C C Java 属于付费工具 Stake SmartRiskAnalyzer 扫描语言C C Java 属于付费工具 Ra
  • 【缓存】一种新的缓存 Caffeine Cach 介绍

    1 概述 转载 真正的缓存之王 Google Guava 只是弟弟 Guava Cache 他的优点是封装了get put操作 提供线程安全的缓存操作 提供过期策略 提供回收策略 缓存监控 当缓存的数据超过最大值时 使用LRU算法替换 这一
  • upload-labs通关秘籍和安装环境

    upload labs通关 一 什么是upload labs 二 漏洞 三 安装环境 四 小试牛刀 第一关 pass 01 客户端检测绕过 js检测 第二关 pass 02 content type 服务器端检测 MIME 类型 第三关 上
  • element-ui组件学习

    element ui组件的大致分类 element ui的组件大致分为以下几类 Basic Form Data Notice Navigation Other 组件分类的大致意思 basic组件类型 是一些关于页面布局 按钮和icon等相关
  • 后台数据转换成json数组字符串到前端方法

    1 将结果集ResultSet转化为List集合 对结果集转换成list集合 public List
  • window丢失msvcp90.dll怎么办

    今天在使用py2exe生成编译的时候出现了 No such file or directory msvcp90 dll 下面是解决的方法 1 首先把msvcp90 dll下载到本机 这个就要去网上自己找一下了 2 将下载好的 msvcp90
  • 界面组件Qt Widgets入门指南,让跨平台嵌入式界面开发更简单!

    Qt 是目前最先进 最完整的跨平台C 开发工具 它不仅完全实现了一次编写 所有平台无差别运行 更提供了几乎所有开发过程中需要用到的工具 如今 Qt已被运用于超过70个行业 数千家企业 支持数百万设备及应用 点击获取Qt Widget组件下载
  • php编译问题Cannot find OpenSSL's evp.h

    在php redis的遇到 Cannot find OpenSSL s
  • 树的遍历方式

    树的三种遍历 一棵树的三种遍历方式 先序遍历 中序遍历 后序遍历 前中后三种顺序其实指的是根的顺序 具体看后文 先序遍历 访问顺序 1 根节点 2 左子树 3 右子树 这里根节点是最优先级 因为是先序 根节点放最前 1 中序遍历 访问顺序
  • CSRF 漏洞原理详解及防御方法

    跨站请求伪造 攻击者可以劫持其他用户进行的一些请求 利用用户身份进行恶意操作 例如 请求http x com del php id 1 是一个删除ID为1的账号 但是只有管理员才可以操作 如果攻击者把这个页面嵌套到其他网站中 img src
  • 各种操作系统支持的磁盘格式对比

    各种操作系统支持的磁盘格式对比 操作系统 支持的磁盘格式 Windows FAT32 exFAT NTFS macOS HFS APFS Linux EXT2 EXT3 EXT4 XFS Btrfs BSD UFS Solaris ZFS
  • MacOS搭建Flutter 环境

    流程 第一步 官网下载对应版本的flutter SDK MacOS有两个版本 x64和 arm64 查看命令 uname a 官网链接 Flutter SDK archive Flutter 下载成功后会自动解压 把Flutter文件放到自
  • 【4】Docker容器相关命令

    1 查看 容器 1 查看正在运行的容器 docker ps 2 查看所有容器 包括 运行中的容器 和 没有运行的容器 docker ps a a 是 all 缩写 3 查看最后一次运行的容器 docker ps l l 是 last 的缩写
  • easyexcel功能扩展:读取excel日期格式(包括日期格式和文本格式)

    实体类属性 ExcelProperty value 时间 index 11 private String time 调用DateUtil DateUtil setParams yyyy MM dd yyyy MM dd DateUtil f