通过验证解析日期

时间:2014-11-21 15:33:44

标签: java android validation parsing date

我目前正在尝试解析日期(和时间),将它们从纪元转换为毫秒。

为此,我使用SimpleDateFormat进行解析,代码如下:

public static long parseDate(String date) {
  // Parse
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
  Date parsedDate = format.parse(date);

  // Get milliseconds
  Calendar cal = new GregorianCalendar();
  cal.setTime(parsedDate);
  return cal.getTimeInMillis();
}

玩弄我发现SimpleDateFormat允许解析1970-00-00,解析为1969-11-30。考虑一下,这完全有道理。当解析器只是"总和"一切都使1969年实际上被理解为' 1969-11-30'和0 monts a"年溢出"没有发生。 不幸的是,我没有更改此日期无效的任何内容(至少我理解日期)。

有没有办法通过不使用第三方库或java 8(目标是Android)来添加验证,还是必须手动使用正则表达式和验证?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

呃我很抱歉发布了这个问题...

答案是用以下方法禁用lenient标志:

format.setLenient(false);

我不会删除这个问题,所以如果有人偶然发现这个问题,就不需要花费数小时来弄清楚如何改变这个......希望它有所帮助!

这也引出了一个问题,为什么默认情况下会启用此标志?