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

DateFormat模式“dd/MM/yyyy”接受错误的月份[重复]

澹台衡
2023-03-14

我有一个带有“dd/MM/yyyy”的字符串格式日期(模式巴西)

但在我的代码中,当转换为日期时,接受错误的月份。

    *String str = "01/15/2021"; 
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    Date dt = df.parse(str);        
    System.out.println(dt);*

结果是: Tue Mar01 00:00:00BRT 2022

如何使其无效?

共有2个答案

田鸿彩
2023-03-14

现代解决方案使用java。时间类,从不使用日期或日历。

默认情况下,LocalDate解析是严格的而不是宽松的。DateTimeParseException的陷阱。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
String input = "01/15/2021" ;
try {
    LocalDate ld = LocalDate.parse( input , f ) ;
} catch ( DateTimeParseException e ) {
    … handle faulty input here …
}
汤乐家
2023-03-14

这应该可以修复它:

df.setLenient(false);

但是请查看其他日期类型,例如LocalDate或ZonedDate。以后会容易得多;)

 类似资料:
  • 问题内容: 我希望将日期格式更改为MM / DD / YYYY,当前为YYYY / MM / DD。 我尝试进行研究,但具有讽刺意味的是,情况总是相反。现在有人可能会说将其向后尝试从那里开始尝试,但没有成功。 我上课的所有事情: 顺便说一下,我不熟悉的简单日期格式类和日期格式类,并且尝试实现它们均未成功。 问题答案: 只需使用即可转换为。无需麻烦的API。 而是在整个代码中使用此对象。每当您需要将

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

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

  • 我有一个格式为。我希望它的格式为 下面是我尝试进行此转换的示例util: 但是,我得到的输出不是格式。 请告诉我如何将从格式化为

  • 我正在尝试将yyyy-mm-dd't'hh:mm:ss.sssz格式的日期格式化为yyyy-mm-ddhh:mm:ss,这应该很容易,但我无法使其工作。 必须解析的日期形式为:2012-10-01T09:45:00.000+02:00 现在我使用这个简单的日期格式化程序来格式化它: 然而,这给出的输出类似于2012-10-01T09:45:00.000 UTC+00:00。 我还尝试使用“yyyy

  • 我从格式为yyyy-mm-dd(加上不需要的hh-mm-ss)的API中获取日期结果。我想在jQuery中将其转换为dd-mm-yyyy格式,最简单/最快的方法是什么? 目前我正在使用:(对于返回的字符串yyyy-mm-dd): 但是好像有点啰嗦。