Java 有没有一种方法可以比将Lenence设置为false更严格地进行日期解析?
我对Java编程有点陌生,我需要将得到的日期解析为字符串。格式必须是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
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无法捕捉到这些日期。是的,谢谢,我完全忘记了正则表达式;这样,我可以在保留日期的完整性检查的同时强制设置格式。