数据分类分级 数据识别-识别日期类型数据

这篇具有很好参考价值的文章主要介绍了数据分类分级 数据识别-识别日期类型数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前面针对数据安全-数据分类分级方案设计做了分析讲解,具体内容可点击数据安全-数据分类分级方案设计,不再做赘述

数据分类分级 数据识别-识别日期类型数据

上面图片是AI创作生成!如需咒语可私戳哦!

前言

要做数据分类分级,重要的是分类分级模版的合理性和数据识别的准确性。数据识别主要技术涉及正则表达式、关键字典、机器学习、NLP、文档指纹等。对于结构化数据,具有一定规则的数据通常是正则表达式或算法来解决。本篇博客针对日期类型数据的识别展开讲解。

需求

利用正则表达式识别如下日期类型数据,验证是否为合法的日期字符串,并转化为数据库的datetime类型(yyyy-MM-dd HH:mm:ss)

日期格式

本次数据识别针对的日期格式如下

  1. // 2001年02月10日
    yyyy年M月d日
  2. // 二〇一一年三月七日
    yyyy年M月d日
  3. // 2001/2/20
    yyyy/M/d
  4. // 2001-2-20
    yyyy-MM-dd
  5. // 20010220
    yyyyMMdd
  6. // 20010220000000
    yyyyMMddHHmmss
  7. // 2001/02/07 00:00:00
    yyyy/MM/dd HH:mm:ss
  8. // 2001-03-07 14:00:00
    yyyy-MM-dd HH:mm:ss
  9. // 2001/2/20 10:00 PM
    yyyy/MM/dd hh:mm a

代码

经过验证具体代码如下

package test.dateUtil;

import com.alibaba.excel.util.StringUtils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.regex.Pattern;

/**
 * @author kunZhi
 * @date 2023/4/22 19:40
 */
public class DateTest {
    public static void main(String[] args) {
        regex1("2001年02月10日");
        regex1("二〇一一年三月七日");
        regex1("2001/2/20");
        regex1("2001-2-20");
        regex1("20010220");
        regex1("20010220000000");
        regex1("2001/02/07 00:00:00");
        regex1("2001-03-07 14:00:00");
        regex1("2001/2/20 10:00 PM");
    }
    
    public static String convertChineseNumToArabicNum(String str) {
        String[] chineseNums = {"十月", "二十日", "三十日", "月十日", "二十", "三十", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "〇"};
        String[] arabicNums = {"10月", "20日", "30日", "月10日", "2", "3", "1", "2", "3", "4", "5", "6", "7", "8", "9", "1", "0"};

        for (int i = 0; i < chineseNums.length; i++) {
            str = str.replace(chineseNums[i], arabicNums[i]);
        }
        return str;
    }

    public static void regex1(String inputDateStr) {

        String patternDate = null;
        //2001年3月7日
        if (Pattern.compile("^\\d{4}年\\d{1,2}月\\d{1,2}日$").matcher(inputDateStr).matches()) {
            patternDate = "yyyy年M月d日";
        } else if (Pattern.compile("^二[零〇一二三四五六七八九]{1,3}年(十[一二]|[一-九])月(三十|三十一|十[一-九]|二十[一-九]|[一-九])日$").matcher(inputDateStr).matches()) {
            //二〇〇一年三月七日
            inputDateStr = convertChineseNumToArabicNum(inputDateStr);
            patternDate = "yyyy年M月d日";
        } else if (Pattern.compile("^\\d{4}/\\d{1,2}/\\d{1,2}$").matcher(inputDateStr).matches()) {
            //2001/3/7
            patternDate = "yyyy/M/d";
        } else if (Pattern.compile("^\\d{4}-\\d{1,2}-\\d{1,2}$").matcher(inputDateStr).matches()) {
            //2001-3-7
            patternDate = "yyyy-MM-dd";
        } else if (Pattern.compile("^\\d{8}$").matcher(inputDateStr).matches()) {
            //20010307
            patternDate = "yyyyMMdd";
        } else if (Pattern.compile("^\\d{14}$").matcher(inputDateStr).matches()) {
            //20010307121212
            patternDate = "yyyyMMddHHmmss";
        } else if (Pattern.compile("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:([0-5]\\d):([0-5]\\d)$").matcher(inputDateStr).matches()) {
            //2001/3/7 0:00
            patternDate = "yyyy/MM/dd HH:mm:ss";
        } else if (Pattern.compile("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:([0-5]\\d):([0-5]\\d)$").matcher(inputDateStr).matches()) {
            //2001-3-7 0:00
            patternDate = "yyyy-MM-dd HH:mm:ss";
        }  else if (Pattern.compile("^\\d{4}/\\d{1,2}/\\d{1,2}\\s(0?\\d|1[0-2]):([0-5]\\d) (AM|PM)$").matcher(inputDateStr).matches()) {
            //2001/3/7 12:00 AM
            patternDate = "yyyy/MM/dd hh:mm a";
        } else {
            System.out.println("无法匹配的字符串 :" + inputDateStr);
        }

        if (!StringUtils.isEmpty(patternDate)) {
            Date inputDate = new Date();
            if (patternDate.equals("yyyy/MM/dd hh:mm a")) {
                DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm a", Locale.ENGLISH);
                format.setLenient(false); // 设置为严格解析日期
                try {
                    inputDate = format.parse(inputDateStr);
                } catch (Exception e) {
                    System.out.println("解析日期字符串出错:" + e.getMessage());
                }
            } else {
                SimpleDateFormat inputDateFormat = new SimpleDateFormat(patternDate);
                inputDateFormat.setLenient(false); // 设置为严格解析日期
                // 解析输入字符串为Date对象
                try {
                    inputDate = inputDateFormat.parse(inputDateStr);
                } catch (Exception e) {
                    System.out.println("解析日期字符串出错:" + e.getMessage());
                }
            }

            // 将Date对象格式化为目标格式的字符串
            SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String outputDateStr = outputDateFormat.format(inputDate);
            System.out.println("输入字符串:" + inputDateStr + "目标格式的字符串:" + outputDateStr + "\n");
        }
    }
}

日期类型数据对应正则表达式

//2001年3月7日

  • “^\d{4}年\d{1,2}月\d{1,2}日$” “yyyy年M月d日”

//二〇〇一年三月七日

  • “^二[零〇一二三四五六七八九]{1,3}年(十[一二]|[一-九])月(三十|三十一|十[一-九]|二十[一-九]|[一-九])日$”
  • “yyyy年M月d日”

//2001/3/7

  • “^\d{4}/\d{1,2}/\d{1,2}$” “yyyy/M/d”

//2001-3-7

  • “^\d{4}-\d{1,2}-\d{1,2}$” “yyyy-MM-dd”

//20010307

  • “^\d{8}$”) “yyyyMMdd”

//20010307121212

  • “^\d{14}$” “yyyyMMddHHmmss”

//2001/3/7 0:00

  • “^\d{4}/\d{1,2}/\d{1,2}\s\d{1,2}😦[0-5]\d)😦[0-5]\d)$”
  • “yyyy/MM/dd HH:mm:ss”

//2001-3-7 0:00

  • “^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}😦[0-5]\d)😦[0-5]\d)$”
  • “yyyy-MM-dd HH:mm:ss”

//2001/3/7 12:00 AM

  • “^\d{4}/\d{1,2}/\d{1,2}\s(0?\d|1[0-2])😦[0-5]\d) (AM|PM)$”
  • “yyyy/MM/dd hh:mm a”

最后

  • 好看的灵魂千篇一律,有趣的鲲志一百六七!
  • 如果觉得文章还不错的话,可以点赞+收藏+关注 支持一下,鲲志的主页 还有很多有趣的文章,欢迎小伙伴们前去点评
  • 如果有什么需要改进的地方还请大佬指出❌

数据分类分级 数据识别-识别日期类型数据文章来源地址https://www.toymoban.com/news/detail-454710.html

到了这里,关于数据分类分级 数据识别-识别日期类型数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【转】数据的分类分级简介

    原文链接:https://blog.csdn.net/watson2017/article/details/126388340 1、数据分类分级实施标准 2021年12月31号,全国信息安全标准化技术委员会秘书处发布了《网络安全标准实践指南——网络数据分类分级指引》,给出了数据分类分级的原则、框架和方法。 2、数据分类分级定义 数据分类

    2024年02月15日
    浏览(43)
  • 数据分类分级产品,一文详解

    前言 1、产品介绍 2、技术原理 3、业务流程 4、部署方式   4.1常规部署   4.2docker镜像部署 5、产品主要功能   5.1数据资产扫描   5.2敏感数据自动发现   5.3数据分类分级管理   5.4分类分级结果导出 6、产品价值 7、安全服务 8、技术发展趋势   8.1具备机器学习和数据挖掘技术

    2024年02月09日
    浏览(47)
  • 【转】数据分类分级产品工具

    原文链接:https://blog.csdn.net/weixin_52069830/article/details/124553895 前言 数据分类分级,作为数据安全治理的基础和首要工作,重要性无需赘言,关于数据分类分级的解决方案请看金融数据安全分类分级解决方案,可以了解下整体思路和基本概念。 《数据安全法》、《个人信息保护

    2024年02月03日
    浏览(34)
  • 大数据的分类分级管理

            为了公司给的师带徒,为培训写点材料。让徒弟做事情要有章法,有行业视野,知道方向和资料从哪里去找。         要管理企业的大数据,从什么地方开始呢?首先应该完成企业数据的分类、分级,或者参考分类去找出企业相关的数据条目。         作为工业企

    2024年03月14日
    浏览(119)
  • 什么是数据分类分级?

    自《数据安全法》明确对数据实行分类分级保护后,国家和地方都在加紧该项工作的进行。据行业专家透露,目前国家标准《信息安全技术重要数据识别指南》已经到送审稿阶段,而国标《信息安全技术重要数据处理安全要求》也已完成草稿,正在立项过程之中。梳理发现,

    2024年02月02日
    浏览(38)
  • 数据安全-数据分类分级方案设计

    前面针对数据分类分级做了较为系统性的调研分析报告,具体内容可点击,不再做赘述: 数据安全-数据分类分级调研分析报告 通过前期市场调研与分析,发现已经有多家企业在数据分类分级方向发力,国家政策也是21年才正式发布,市场还处于早期阶段,多家产品也是近一

    2024年01月16日
    浏览(42)
  • 一文读懂数据安全分级分类

    目录 为什么要分级分类? 通用数据分级分类框架 数据分类 数据分类的常用方法 数据分类流程 数据分级 数据分级的常用方法 数据定级流程 行业数据安全分级分类指南 金融行业 电信行业 政务数据 健康医疗 企业实践 附录:数据分级分类大合集 数据分类为信息安全管理提供

    2023年04月26日
    浏览(48)
  • 网络安全合规-数据安全分类分级

    数据安全是指保护数据免受未经授权的访问、使用、泄露、破坏或篡改的措施。数据安全包括物理安全、网络安全、应用程序安全、数据备份和恢复等方面。 数据分级分类是指根据数据的重要性和敏感程度,将数据划分为不同的级别,并根据不同级别的数据制定不同的安全措

    2024年02月11日
    浏览(42)
  • 【SQL开发实战技巧】系列(二十一):数据仓库中时间类型操作(进阶)识别重叠的日期范围,按指定10分钟时间间隔汇总数据

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月09日
    浏览(91)
  • 芳禾数据CTO李明:数据分类分级与治理驱动下的应用革命丨数据猿专访

    ‍数据智能产业创新服务媒体 ——聚焦数智 · 改变商业 我们进入数字化时代,数据已经变得比任何时候都更加关键。每天,我们都在生成、处理和存储海量的数据,这些数据在企业决策、市场研究、产品开发等方面扮演着重要的角色。然而,数据的价值并非总是立即可见的

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包