java 对任意形式字符串检查是否能转换为日期并转换为yyyy-MM-dd的形式

检查日期格式字符串是否能转化成日期 检查日期格式字符串是否能转化成日期,字符串可通过new SimpleDateFormat("xxxx");得到日期字符串 立即下载

在需要将字符串转换为日期时,有时并不能完全固定输入的字符串格式,或者需要对其进行校验,比如excel导入功能等,而日期转换是需要特定格式的字符串输入的,这就需要我们提前对字符串进行校验和转化.

以下对一些常用格式的日期字符串进行了检查,并判断了年月日的数目是否正确,直接调用managerDate(str)即可,其中纯数字字符串必须是八位才符合条件,日期分割符为 ‘年’,‘月’,‘日’,’-’,’/’,’\’,’.’,’*'中的一个,需要补充可以对pattern1进行修改

public static String managerDate(String value){
        String result = "";

        String pattern1 = "^\\d{4}(年|-|/|\\.|\\\\|\\*)(0?[1-9]|1[0-2])(月|-|/|\\.|\\\\|\\*)((0?[1-9])|((1|2)[0-9])|30|31)(日|)$";
        String pattern2 = "^\\d{4}(0?[1-9]|1[0-2])((0?[1-9])|((1|2)[0-9])|30|31)$";

        Pattern r1 = Pattern.compile(pattern1);
        Matcher m1 = r1.matcher(value);
        Pattern r2 = Pattern.compile(pattern2);
        Matcher m2 = r2.matcher(value);
        if(m1.matches()){
            result = value.replaceAll("(年|月|-|/|\\.|\\\\|\\*)","-");
            result = result.replaceAll("日","");
        }else if(m2.matches()){
            if(value.length() != 8){
                throw new ResultException("日期格式不正确,请检查!");
            }
            result = value.substring(0,4) + "-" + value.substring(4,6) + "-" + value.substring(6);
        }else{
            throw new ResultException("日期格式不正确,请检查!");
        }

        String[] dateArr = result.split("-");
        int year = Integer.valueOf(dateArr[0]);
        int month = Integer.valueOf(dateArr[1]);
        int day = Integer.valueOf(dateArr[2]);
        int[] monthLengths = new int[]{0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if(isLeapYear(year)){
            monthLengths[2] = 29;
        }else{
            monthLengths[2] = 28;
        }
        int monthLength = monthLengths[month];
        if(day>monthLength){
            throw new ResultException("日期格式不正确,请检查!");
        }

        result = year + "-" + ("0" + month).substring(("0" + month).length() - 2) + "-" + ("0" + day).substring(("0" + day).length() - 2);

        return result;
    }

	private static boolean isLeapYear(int year){
        return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
    }

注: 里面的抛出异常请替换为自己适合的方式;想要另外的格式可以修改最后的result拼接,也可以将其改为传入分隔符参数的方式增加其通用性(java小白,如果有其它更好的方法或者建议,欢迎评论)

告别纯代码:用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件 本文介绍如何利用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件,解决传统集成方式中的代码臃肿和维护困难问题。通过.NET控件封装核心功能,实现LabVIEW与VisionMaster的高效对接,显著提升工业自动化开发效率。 阅读详情

相关推荐

TMS320F280039 CMD文件配置避坑指南:从.map文件看懂内存分配与溢出排查

本文详细解析了TMS320F280039芯片的CMD文件配置问题,通过.map文件分析内存分配与溢出排查。文章提供了实用的诊断技巧和解决方案,帮助开发者有效应对段溢出、地址重叠和栈堆冲突等常见问题,优化DSP程序的内存管理。

weixin_29168813的博客 445

java判断一个字符串是否可以转成日期(严格的日期转换)

判断一个字符串是否可以转成日期 String tishi=""; String newDateString="2015-4-31 3:2:62"; DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { // 设置lenient为false. 否则

http://itzones.cn 5882

lisflood-fp(一)从源码到可执行文件:Windows下的Cmake实战编译指南

本文详细介绍了在Windows环境下使用Cmake工具编译lisflood-fp水文模型源码生成可执行文件的全过程。从开发环境配置、源码获取到实战编译,逐步指导如何解决常见错误并处理运行时依赖,最终生成可用的exe文件。特别适合水文专业研究者和工程师学习参考。

weixin_30555125的博客 481

java 出生日期格式yyyy-mm-dd 注册验证代码,如何在Java使用正则表达式来验证给定的日期格式,如MM-DD-YYYY?...

的java java.util.regex包提供了各种类来找到在字符序列特定图案。图案类此包的是正则表达式的编译表示。要使用这个类提供了两个方法,即一个字符串匹配一个正则表达式-编译() -此方法接受表示一个正则表达式的字符串并返回Pattern对象的一个对象。matcher() -此方法接受一个String值并创建一个matcher对象,该对象将给定的String与当前模式对象表示的模式匹配。以...

weixin_36315722的博客 639

[学习笔记]Esp32 + 4G模块,随身wifi,ppp拨号上网

Esp32S3 + 4G模块制作随身WIFI教程

weixin_45595548的博客 7415

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 148

校验日期,判断一个字符串是否可以转换为日期

//校验日期,判断一个字符串是否可以转换为日期 public static boolean isValidDate(String str) { boolean convertSuccess = true; // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写; SimpleDateFormat forma...

小符的博客 3144

Android 集成Chrome 浏览器内核 Crosswalk

Crosswalk 内核的兴起与消亡 Android 4.4 版本之前,使用的是基于 androidWebKit 的 WebView 但实际上,由于 Android 的碎片化问题(大量存在不同的 Android 系统版本,并且各个厂商对内置应用进行定制化,有可能用的不是最新的浏览器内核)。这就导致 WebView 在真实环境中对 API 的支持根本无迹可寻,越发混乱。 随着混合开发的兴起,前端对 ...

司马懿的西山居 2万+

日期型字符串格式验证方法

两种: 1. static boolean isValidDate(String str) { boolean convertSuccess=true; // 指定日期格式yyyyMMddHHmmss SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); try { // 设置lenient为...

ptsx0607的专栏 817

stm32H743IIT6 cubemx HAL USB UVC摄像头基础

stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上 开发环境: stm32cubemx 6.0.1 单片机: 自己做的stm32h743iit6核心板,兼容正点原子 学习资料: 圈圈学USB 鱼鹰谈单片机 从零开始学习USBhttps://to-run-away.blog.youkuaiyun.com/article/details/85038393 整个项目是基于CDC串口上修改 1 stm32 USB 代码概览 ..

紫枫洛天的博客 7750

A133在Android13上适配百兆以太网

NOTE] 【技术支持问题】问题背景/平台。

mangofu的博客 412

Java基础编程题目——输入年月日,判断日期是否合法,若不合法则抛出异常

编写一个方法,将格式为“yyyy/mm/dd”的字符串转换为日期类型,如果日期数据非法,则抛出异常。 import java.util.InputMismatchException; import java.util.Scanner; public class Dates { public static void main(String[] args) { Scanner...

美好事物 7019

GibbsCAM软件二次开发:GibbsCAM软件API接口详解

API(Application Programming Interface,应用程序编程接口)是一种允许不同软件之间进行通信的接口。在GibbsCAM软件中,API提供了与外部程序交互的能力,使得开发者可以利用GibbsCAM的强大功能进行二次开发,定制化满足特定的制造需求。GibbsCAM的API主要基于.NET框架,使用C#或VB.NET等语言进行编程。在GibbsCAM软件中,通过API接口创建自定义几何形状是实现复杂零件设计和加工策略定制的关键步骤。

kkchenjj的博客 1497

JAVA判断时间格式为 "YYYY-MM-DD"

"yyyy-MM-DD" 字符串时间格式检查

X2017_8_26的博客 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

oracle 日期改字符格式_在Oracle中将日期格式’yyyy / mm / dd’更改为’mm-dd-yyyy’...

我已插入Oracle中的表。 我没有PLSQL的实现将是:SELECT to_date('1900-01-01','YYYY-MM-DD') + (rownum - 1) AS DT_CAL,rownum AS NUM_JOURFROM dualCONNECT BY to_date('1900-01-01','YYYY-MM-DD') + (rownum - 1) <=to_date('...

weixin_42469749的博客 5264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java 检查日期是否正确_Java检查日期格式是否正确

需求:因为系统有很多日期格式,所以日期验证函数的输入是一个日期字符串和一个格式字符串。格式字符串用的是Java定义的格式(参考地址)。刚开始写时,觉得很简单,直接就写了下面的代码。public static boolean isDate(String dttm, String format) {boolean retValue = false;if (dttm != null) {SimpleDa...

weixin_34324006的博客 2218

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java字符串 日期_Java中字符串格式的日期比较详解

日期的比较是两日期之间进行对比了下面我们来看一篇关于Java中字符串格式的日期比较吧,希望此文章能够对各位同学带来帮助,具体的步骤细节如下.在实际开发中,有的小伙伴会遇到一些日期处理的问题,最比如日期的比较。有时候日期并不是Date类,而是以字符串来表示的,like this : 1994-09-11,这种日期是没办法直接比较的,这就需要我们将它先格式化了,这里就用到了DateFormat类了。先...

weixin_32389225的博客 1445

java-从格式1日期字符串转化到格式2日期字符串

注意点: 1.字符串-格式1-日期-格式2-字符串 2.转化成日期时,*不能识别字符串中任何形式的周,*只能识别数字月份,(SimpleDateFormate的类介绍很含蓄得写了,通过测试证实了) 以下是封装的方法和测试代码 //TimeUtils类 package common.utils; import java.text.ParseException; import jav...

NJUPTlizhifeng的博客 388

按照要求的输入输出格式进行日期字符串的转化

编程题:         先编写一个方法,它将格式为“yyyy/mm/dd”形式的日期字符串转化为日期对象。若日期字符串不符合以上规定,则抛出异常。再在main方法中对正常和异常输入的日期字符串分别进行验证,并输出转换后的日期对象。 1 转化类 /** * */ package PrintDate; import java.util.Scanner; import java.

u012186491的专栏 3711

java字符串转日期_Java字符串转换为日期和时间比较大小

方法一:DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");String dateBegin=fmt.format(carrierCommand.getDateBegin());String dateEnd=fmt.format(carrierCommand.getDateEnd());//如果获得的日期格式不是'2008-05-22',就必须要...

weixin_42419508的博客 218

Java检查日期格式是否正确

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33672400的博客 4424

c语言 date转string,c如何将字符串转换为时间格式

1.C语言中 有没有函数可以将字符串直接转为时间格式的由于实际生活中,字符串形式的时间有可能有多种形式,比如月日年,或年月日,中间的分隔符也可能有所不同。所以C语言并没有提供此类的转换函数。如果有需求,那么在确定字符串的组织格式前提下,可以自行书写一个转换函数。有两种思路:1 传入字符串,逐位解析每个字符,智能检查出数字之间的分隔符。然后根据分隔符,取出各个位上的数值,如年月日时分秒等。最终赋值到...

weixin_39628247的博客 2121

为什么阿里巴巴要求日期格式化时必须有使用y表示年,而不能用Y?

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章在Java中进行日期处理大家一定都不陌生,我们经常会需要在代码中进行日期的转换、日期的格式化等操作。而一般我们进行日期...

方志朋的博客 212

JAVA开发使用@JsonFormat注解,日期比实际日期少一天问题

最近同事反馈一个问题,说是日期保存后未发生变化。刚开始以为是字段未对应或者是未保存成功,当我去进行排查的时候发现,发现数据保存没有问题。奇了怪了。

weixin_45456848的博客 1687

java 输出object 类型_Object转为String的几种形式(转载)

在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法一一进行分析。方法1:采用Object.toString()方法请看下面的例子:Object object = getObject();Sys...

weixin_39925031的博客 882

【java8】时间日期的使用与格式化

LocalTime LocalDateTime Instant Instant类用于处理机器可读的时间格式,它将日期时间存储在unix时间戳中。 Duration Duration用于表示两个时间之间的差值。 Period Period用于表示两个日期之间的差值。 ZoneId 方法 描述 String getDisplayName(TextStyle style,Locale locale) 用于获取区域的文本表示形式,例如“北京时间”或者"+08:00" abstract Str

morris 2396
上一篇: JS 对象数组n元排序
下一篇: JS 字符串替换特定子串
enterclose
博客等级 码龄7年 1粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值