DateFormat 模式 "dd/MM/yyyy" 接受错误的月份
DateFormat pattern "dd/MM/yyyy" accept wrong months
我有一个带有“dd/MM/yyyy”(巴西模式)的字符串格式日期
但在我的代码中,当转换为日期时,接受了错误的月份。
*String str = "01/15/2021";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date dt = df.parse(str);
System.out.println(dt);*
结果是:3 月 1 日星期二 00:00:00 BRT 2022
如何使这个无效?
这应该可以解决问题:
df.setLenient(false);
但请查看其他日期类型,例如 LocalDate 或 ZonedDate。以后容易多了 ;)
现代解决方案使用 java.time 类,从不使用 Date
或 Calendar
.
默认情况下,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 …
}
我有一个带有“dd/MM/yyyy”(巴西模式)的字符串格式日期
但在我的代码中,当转换为日期时,接受了错误的月份。
*String str = "01/15/2021";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date dt = df.parse(str);
System.out.println(dt);*
结果是:3 月 1 日星期二 00:00:00 BRT 2022
如何使这个无效?
这应该可以解决问题:
df.setLenient(false);
但请查看其他日期类型,例如 LocalDate 或 ZonedDate。以后容易多了 ;)
现代解决方案使用 java.time 类,从不使用 Date
或 Calendar
.
默认情况下,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 …
}