作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 SimpleDateFormat
和模式 "MM"
并尝试解析 "0012"
。
即使禁用了宽大处理,格式化程序也会成功地将其解析为 12 月。我希望它抛出异常,这不是两位数的月份。有谁知道如何实现这一点?
代码
示例代码:
SimpleDateFormat df = new SimpleDateFormat( "MM");
df.setLenient( false);
System.out.println( df.parse( "0012"));
输出:
Tue Dec 01 00:00:00 CET 1970
最佳答案
继续使用现代 Java 日期和时间 API java.time
。 DateTimeFormatter.ofPattern("uuuu-MM-dd")
会将 00
解析为月份然后对象,因为它后面没有连字符,-
(也就是说,甚至在检查 00 不是有效的月份数字之前)。
我认为无论如何您都应该使用 java.time
。您正在使用的 SimpleDateFormat
类不仅已经过时,而且出了名的麻烦。
链接: Oracle Tutorial: Date Time解释如何使用 java.time
。
关于java - 如何在 SimpleDateFormat 中禁用零填充宽大处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626331/
我是一名优秀的程序员,十分优秀!