Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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日期和SimpleDataFormat验证范围_Java_Validation_Date_Range - Fatal编程技术网

使用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