使用java日期和SimpleDataFormat验证范围
当我尝试使用以下代码解析日期时,是否存在可以处理的日期异常:使用java日期和SimpleDataFormat验证范围,java,validation,date,range,Java,Validation,Date,Range,当我尝试使用以下代码解析日期时,是否存在可以处理的日期异常: try{ SimpleDateFormat df = new SimpleDateFormat("dd:MM:yyyy"); Date date = df.parse(dateRelease); }catch (ParseException e) {} 好吧,如果“dateRelease”的格式类型不正确,它会抛出ParseException,但我想知道,如果有人写得像“40/03/2010”-日
try{
SimpleDateFormat df = new SimpleDateFormat("dd:MM:yyyy");
Date date = df.parse(dateRelease);
}catch (ParseException e) {}
好吧,如果“dateRelease”的格式类型不正确,它会抛出ParseException,但我想知道,如果有人写得像“40/03/2010”-日期、月份或年份无效范围错误。实际上,发送无效日期时,SimpleDataFormat只需使用默认数字创建一个新日期
我是否必须使用正则表达式创建自己的方法来处理它,或者是否存在一个现有的异常来告诉我如何捕获它?通过使用值false使其不宽容
SimpleDateFormat df = new SimpleDateFormat("dd:MM:yyyy");
df.setLenient(false);
Date date = df.parse(dateRelease);
当日期不在有效范围内时,它将抛出ParseException
。tl;博士
使用java.time
现代的方法是将java.time类内置到Java8和更高版本中
示例数据与示例代码中显示的格式不匹配。一个使用SOLIDUS(斜杠)字符,另一个使用冒号字符。我和科隆一起去
DateTimeFormatter
定义与输入字符串匹配的格式模式
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd:MM:uuuu" );
LocalDate
解析为LocalDate
对象,因为输入没有时间和时区
LocalDate localDateGood = LocalDate.parse( "27:03:2010" , f );
System.out.println( "localDateGood: " + localDateGood );
现在尝试一些错误的输入。为适当的异常设置陷阱
try {
LocalDate localDateBad = LocalDate.parse( "40:03:2010" , f );
} catch ( DateTimeParseException e ) {
System.out.println( "ERROR - Bad input." );
}
看这个
本地日期:2010-03-27
错误-输入错误
ISO 8601
在将日期时间值交换/存储为文本时使用标准格式。标准格式合理、实用、易于不同文化背景的人阅读,并且易于机器解析
对于仅日期值,标准格式为YYYY-MM-DD,如2010-03-27
在解析/生成字符串时,java.time类默认使用标准ISO 8601格式。因此,根本不需要指定格式化模式
LocalDate localDate = LocalDate.parse( "2010-03-27" );
String output = localDate.toString(); // 2010-03-27
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。您能否明确说明您要查找的是什么?似乎您正在寻找某种类型的异常,以告知您某些验证是否失败?这并不是什么例外。嗯,我想知道用户输入的日期是否有有效的日期、月份或年份范围。如果没有,则显示失败,而不是创建对象。谢谢你,伙计,这就是我要搜索的!(工作)
LocalDate localDate = LocalDate.parse( "2010-03-27" );
String output = localDate.toString(); // 2010-03-27