2014-11-21 62 views
0

我目前正试图解析日期(和时间)将它们从时代转换为毫秒。解析日期与验证

为此我使用的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时,“年溢出”不会发生。 不幸的是,我没有改变这个日期无效的任何东西(至少据我了解日期)。

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

预先感谢您!

回答

1

嗯,我很抱歉,张贴了这个问题...

答案是禁用宽松的标志:

format.setLenient(false); 

我不会删除这个问题,这样,如果有人绊倒这不需要花费数小时来弄清楚如何改变这个......希望它有帮助!

这也导致我为什么这个标志是默认启用的问题?