【发布时间】:2016-01-15 12:12:32
【问题描述】:
我想以 yyyy-MM-dd 格式验证日期。 如果我给出两位数的年份(即 YY 而不是 YYYY),它不会引发任何异常,并且 00 会在解析日期时附加到日期时间格式。
我添加了setLenient(false);,但仍然无法正确验证。
谁能帮我解决这个问题?
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
formatter.setLenient(false);
try {
Date date = (Date)formatter.parse("15-05-30"); //In this line year is getting appened with 00 and becomes 0015
reciptDate = dateFormat.format(date);
} catch (ParseException pe) {
return false;
}
【问题讨论】:
-
为什么不简单地解析
"2015-05-30"?你有什么理由想要另一个SimpleDateFormat而不是你实际需要的吗? -
如果格式与 yyyy-MM-dd 不匹配,我们想抛出一些异常
-
stackoverflow.com/questions/18534343/… 请参阅此链接。如果年份小于假设 2000,您可能应该定义一个额外的检查。除此之外,15 是一年的有效数字。
-
例如:
if (date.before(new Date(0L))) return false;
标签: java date simpledateformat