2014-11-21 60 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); 

我不會刪除這個問題,這樣,如果有人絆倒這不需要花費數小時來弄清楚如何改變這個......希望它有幫助!

這也導致我爲什麼這個標誌是默認啓用的問題?