当前位置: 首页 > 知识库问答 >
问题:

当格式设置为dd/mm/yyyy[关闭]时,SimpleDateFormat似乎允许一年的yy

贺方伟
2023-03-14

如果我有这个:

private static final String DATE_FORMAT = "dd/MM/yyyy";
DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
formatter.setLenient(false);
formatter.parse("01/01/98");

如果传入2位数的年份,我的应用程序是否应该抛出异常?这似乎没有任何问题。

共有1个答案

左丘成仁
2023-03-14

否。SimpleDataFormat用于从字符串解析日期和从日期生成字符串。格式字符串的解释在这些用法之间有所不同。在本例中,您正在从字符串解析日期。98是一个合法值,由于您使用的是yyyy,因此会按字面解释(即98 AD)。如果将yyy替换为yyy,则解析应将98解释为1998。如果您需要4位数字的日期,那么您需要添加一些验证代码。

请注意,setLenient不会影响此处的任何内容,因为每个位置的值都是合法的。年度职位不要求您有4位数字(也不限于4位)。如果解释不宽大,并且您通过了“1998/04/12”,它将抛出异常,因为1998不在1-12范围内。如果您设置lenient,那么它将修改该值,使其进入范围(1998变为6)并向前充电。由于年份没有实际界限,因此对年份位置没有影响。

 类似资料:
  • 如果我有这个: 如果传入2位数的年份,我的应用程序应该抛出异常吗?这似乎没有任何问题。

  • 问题内容: 我有一个格式。我希望它采用以下格式 以下是我尝试进行此转换的示例: 我得到的输出仍然不是格式。 请让我知道如何格式化从到 问题答案: 是自Unix纪元(1970年1月1日UTC:00:00)以来的毫秒数的容器。 它没有格式的概念。 输出…

  • 问题内容: 我有一个日期格式。如何将其转换为使用JavaScript? 上面的代码为我提供了相同的日期格式。我怎样才能解决这个问题? 问题答案: 你可以做: 用法示例: 输出:

  • 问题内容: 我有一个日期为dd-mm-yyyy格式的日期(在我的数据库内)。我需要将其转换为dd-mm-yy格式。我从db中检索了日期并将其存储在字符串中。 1990并不是完全需要的,只需要90.使用java中的split()我尝试了一些东西,但它不会帮助我。任何人都可以帮忙。任何帮助将不胜感激。 问题答案: 试试下面的代码

  • 问题内容: 我有一个名为的表,还有一个名为的列,ID的数据如下所示: IN_Date的数据类型为varchar(50)。 我正在尝试将IN_Date转换为mm / dd / yyyy格式。我尝试这样做: 但是格式仍然没有改变。谁能告诉我我要去哪里错了 问题答案: 您需要先进行转换才能将数据固定(正确的数据类型), 然后再 格式化…

  • 问题内容: 我正在尝试从转换日期。我已经使用了mktime()函数和其他函数,但是我似乎无法使其工作。我已经成功地将原始日期用作定界符,但更改格式并将其与交换时没有成功。 任何帮助将不胜感激。 问题答案: 通过查看各个组成部分之间的分隔符,可以消除或格式中的日期的歧义:如果该分隔符是斜杠(),则假定为American ;否则,为0。反之,如果分隔符是破折号()或点(),则采用欧洲格式。 使用默认的