使用excel导入功能时日期数据变成数字的解决

当使用excel导入功能处理日期数据时,1900年之后的日期可能显示为数字。这是因为excel将这些日期解析为从1900年开始的天数。解决方法包括:1) 对1900年前的正常日期文本直接转换;2) 对数字形式的日期进行加法运算以还原日期,特别注意要处理1900-02-29的特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用excel导入功能时日期数据变成数字的解决

在使用excel导入功能的时候,难免会导入日期类型的数据,这个时候无论使用easyexcel还是poi的导入方式,都有可能出现纯数字的日期。
1、如果输入的日期是1900年之前的,则不会变成纯数字;
2、如果是1900年之后的日期,则在导入的时候可能会变成数字:
原因
从这张图里面就能看出来原因:excel解析时间类型的数据的时候把日期转成文本类型了。
那么这个数字代表什么呢?
这个数字与上面提到的1900年相关,因为excel中的时间是从1900年开始的,而转换成文本类型的数字则代表着1900年之后的N天,知道这个原理之后,就很好解决这个问题了:
1)如果是正常的时间类型则进行日期转换(1900年之前日期是正常的文本类型);
2)如果是纯数字则进行日期的加法运算。
这个时候需要注意一点的是:1900-02-29这一天是不存在的,但是在excel中是可以输入并转换成数字的,所以需要特殊处理一下,整体处理的代码如下:

private String judgeMemberBirthday(MemberInfo member) {
    /**
     * 正整数判断(不包含0)
     */
    private final Pattern pattern = Pattern.compile("^[1-9]\\d*$");

    /**
     * excel中的起始时间
     */
    private final LocalDate excelStart = LocalDate.of(1899, 12, 31);
	//开始执行
        try {
            //超过10位,不满足年月日格式
            if (member.getBirthday().length() > 10) {
                return "生日格式有误";
            }
            //日期转换格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //将字符串日期进行格式化,如果出现异常,说明不是日期格式的
            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-M-d");
            LocalDate date = LocalDate.parse(member.getBirthday(), df);
            member.setBirthday(date);
            return null;
        } catch (Exception e) {
            //如果是纯数字,可能是excel中是日期格式转成了文本格式
            if (pattern.matcher(member.getBirthday()).matches()) {
                if (Integer.valueOf(member.getBirthday()) > 60) {
                    LocalDate localDate = excelStart.plusDays(Integer.valueOf(member.getBirthday()) - 1);
                    if (localDate.isAfter(LocalDate.now())) {
                        return "生日格式有误";
                    }
                    member.setBirthday(localDate);
                    return null;
                } else if (Integer.valueOf(member.getBirthday()) < 60) {
                    LocalDate localDate = excelStart.plusDays(Integer.valueOf(member.getBirthday()));
                    member.setBirthday(localDate);
                    return null;
                } else {
                    return "生日格式有误";
                }
            } else {
                return "生日格式有误";
            }
        }
    }

欢迎评论收藏,如需转载,转贴请注明出处!

### 安全区、工作区、接待区的信息安全控制措施 #### 安全区的安全控制措施 为了确保敏感数据和关键系统的安全性,在安全部署物理和技术上的多重防护机制至关重要。应当设立专门的访问权限制度,仅授权特定人员进该区域,并过生物识别技术或其他高级认证手段验证身份[^1]。 对于信息系统而言,部署防火墙、侵检测/防御系统(IDS/IPS),定期更补丁程序以防止已知漏洞被利用。此外,还应安装防病毒件和其他恶意代码防范工具来保护服务器免受潜在威胁的影响。 ```python def check_security_zone_access(user_id, biometric_data): authorized_users = get_authorized_user_list() if user_id in authorized_users and verify_biometrics(biometric_data): grant_access_to_security_zone() else: deny_access_and_log_attempt() def protect_servers(): install_firewall_rules() configure_ids_ips_systems() apply_latest_patches() deploy_antivirus_software() ``` #### 工作区的安全控制措施 在工作区内,重点在于教育员工遵循良好的信息安全习惯以及实施有效的终端设备管理和网络流量监测策略。制定清晰的行为准则文档并向全体员工传达其重要性和具体要求;同时开展针对性培训课程提高大家对最攻击手法的认识水平。 针对计算机及其外设采取加密存储介质、设置强密码登录方式等预防性举措可以减少因人为失误造成的数据泄露风险。另外还需加强对无线局域网(WLAN)信号强度覆盖范围内的管控力度,避免非法接点带来的安全隐患。 ```bash # 设置工作站安全配置脚本 sudo apt-get update && sudo apt-get upgrade -y sudo ufw enable sudo systemctl start sshd.service sudo systemctl enable sshd.service echo "Ensure all workstations have strong password policies enforced." ``` #### 接待区的安全控制措施 考虑到访客可能携带未经过严格审查便携式计算装置的情况,在此区域内需特别注意公共Wi-Fi热点建设和使用规则说明牌摆放位置的选择。提供独立于企业内部生产环境之外的一个隔离型互联网连接服务给来访者使用,这样既能满足对方上网需求又不会影响到核心业务运作效率。 安排专人负责监督登记表单填写情况并及时提醒忘记签退离场的人士完成相应手续。当发现可疑行为时立即启动应急预案知相关部门介调查处理直至事件妥善解决为止。 ```sql CREATE TABLE visitor_logs ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), company VARCHAR(255), arrival_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, departure_time TIMESTAMP NULL ); INSERT INTO visitor_logs (name, company) VALUES ('John Doe', 'Example Corp'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值