我想使用格式为"yyyymmdd"的simpleDateFormat验证和解析日期.这也允许100624,它被解析为10年(Julius Ceasar去世后54年).日期也将像1970年一样,所以我不想与SimpleDateFornat("yymmdd")达成和解.
我想知道有没有办法使用SimpleDateFormat强制四位数的年份格式?我很接近在前面做一个regexp测试,但也许有一种聪明的方法来使用(Simple)DateFormat()?
根据要求的代码,事情变得越来越复杂,我的研究只有一半.使用的格式是yyyy-MM-dd开头(它来自一个变量,它有一个错误的javadoc).但是如下面的答案中所示,yyyyMMdd确实强制使用了四年的数字.所以我的问题改为如何强制"yyyy-MM-dd"格式的四位数年份.为什么"yyyyMMdd"表现不同?
public void testMaturity() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(" " + sdf.format(sdf.parse("40-12-14")));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
System.out.println(" " + sdf2.format(sdf2.parse("401214")));
fail();
} catch (ParseException pe) {
assertTrue(true);
}
Run Code Online (Sandbox Code Playgroud)
其中打印0040-12-14