用Java的simpledateformat强制4位数字的年份

我想使用带有格式“

yyyymmdd”的simpleDateFormat验证和解析日期,这还允许将100624解析为10年(朱利叶斯·塞萨尔去世后54年)。日期也将是1970年左右,所以我不想使用SimpleDateFornat(“

yymmdd”)解决。

我想知道是否有一种方法可以使用SimpleDateFormat强制采用四位数的年份格式?我即将进行正则表达式测试,但是也许有一种使用(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);

}

哪个打印0040-12-14

回答:

只需使用yyyyMMdd(注意:大写M用于表示月份,否则您正在解析分钟!),然后检查年份是否大于某个截止日期(例如,解析出生日期时,大于1800是安全的选择,何时解析日期大于或等于当前年份的日期比较合适)。

以上是 用Java的simpledateformat强制4位数字的年份 的全部内容, 来源链接: utcz.com/qa/410621.html

回到顶部