Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以比将Lenence设置为false更严格地进行日期解析?_Java_Parsing_Date_Datetime - Fatal编程技术网

Java 有没有一种方法可以比将Lenence设置为false更严格地进行日期解析?

Java 有没有一种方法可以比将Lenence设置为false更严格地进行日期解析?,java,parsing,date,datetime,Java,Parsing,Date,Datetime,我对Java编程有点陌生,我需要将得到的日期解析为字符串。格式必须是dd-MM-yyyy,但我认为这与答案无关 要将该字符串解析为Calendar对象,我将按以下方式使用SimpleDateFormat: String example = "16-09-2013"; SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy"); formato.setLenient(false); Calendar cal = new Gregoria

我对Java编程有点陌生,我需要将得到的日期解析为字符串。格式必须是
dd-MM-yyyy
,但我认为这与答案无关

要将该字符串解析为
Calendar
对象,我将按以下方式使用
SimpleDateFormat

String example = "16-09-2013";
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
formato.setLenient(false);
Calendar cal = new GregorianCalendar();
cal.setTime(format.parse(date));
结果是可以预料的

问题在于,它还可以正确解析类似于
“16-9-2013”
(请注意,该月没有前导0)的内容,当发生这种情况时,我更愿意抛出异常并捕获它以进行适当的通知


我被限制在不添加任何内容的情况下使用JavaSE(这会占用Joda时间等),因此我想知道,是否有一种方法可以解析日期字符串,使其仅在严格遵守格式的情况下才能成功

您可以使用正则表达式检查字符串是否与预期格式匹配,因为正则表达式内置于Java SE中


然后,您可以使用上面的代码来检查它实际上是一个有效日期,而不是一些无效日期,例如2月31日,regex无法捕捉到这些日期。

是的,谢谢,我完全忘记了正则表达式;这样,我可以在保留日期的完整性检查的同时强制设置格式。