当前位置: 首页 > 面试题库 >

为什么SimpleDateFormat(“ MM / dd / yyyy”)将日期解析为10/20/20128?

嵇永望
2023-03-14
问题内容

我有这个代码:

  DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
  dateFormat.setLenient(false);
  Date date = dateFormat.parse("10/20/20128");

而且我希望dateFormat.parse调用会引发ParseException,因为我提供的年份长5个字符,而不是像我定义的格式那样长4个字符。但是出于某种原因,即使将lenient设置为false,此调用也会返回Date对象10/20/20128。

这是为什么?这对我来说没有多大意义。还有其他设置可以使其更加严格吗?


问题答案:

20128是有效的一年,我想Java希望世界能活那么久。

如果图案字母的数量大于2,则将按字面意义解释年份,而不考虑数字的位数。

参考。

如果您想验证日期是否在限制范围内,则可以定义一个日期并检查-

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date maxDate = sdf.parse("01/01/2099");  // This is the limit

if(someDate.after(maxDate)){            
    System.out.println("Invalid date");            
}


 类似资料:
  • 我想将日期从07/02/2019转换为2019年7月07日。我的输入值是07/02/2019我想与目标值2019年7月07日进行比较.....请帮助我... public static void main(string[]args)引发ParseException{ 输出:Mon Jul 01 00:00:00 IST 2019这不是我的期望值

  • 我的日期格式为。如何使用JavaScript将其转换为? 上面的代码给了我相同的日期格式,。我该怎么解决这个?

  • 问题内容: 当我在下面的代码下运行时,出现Unparseable错误。如何将dd MMM yyyy格式转换为dd / MM / yyyy格式? 问题答案: 假设您修复了明显的语法错误,则: 您要做的就是为您需要解析的格式创建一个解析器,并为您想要的格式创建一个格式化器:

  • 我想使用日期格式为yyyy-MM-dd hh:mm:ss的localdatetime.parse()方法解析一个日期,但实际得到的是格式为yyyy-mm-ddthh:mm:ss的日期。我不需要那个“T”。请参阅下面的代码 我得到的结果是2016-10-31T23:59:59。看那个“T”。“t”引起了一些问题,因此我无法将其保存到我的数据库中。我尝试在类型的列中持久化该值;我得到错误-。

  • 问题内容: 好吧,我正在使用a进行详细说明,因为我从数据库中获取了一个对象,并且从同一对象中获得了一个变量“ fecha”(日期),因此我得到了a ,因此formatt以毫秒为单位,但是我不想出现毫秒。因此,我需要将我从数据库中收到的日期格式化为没有毫秒的新日期。 这是对象Factura: 在映射到数据库的xml中,我具有该变量“ fecha”的代码: 在数据库中,该列为。 当我从数据库中获取一个

  • 对于上面的代码,获取输出,我期望的是。有人能解释为什么会发生这种情况,以及如何使用验证上面的日期吗。感谢你的努力。