我想創建一些可以檢查多種格式的日期/時間來查看它是否有效的日期/時間,以便我可以處理它。處理它包括將日期/時間轉換爲我的軟件可以使用的標準化日期/時間。問題是,我將不得不用不同的方式進行檢查,以便使用SimpleDateFormat檢測日期,但確實很難獲得各種各樣的信息。該項目涉及在日期列中解析具有潛在用戶指定日期格式的CSV文件。有沒有更好的辦法?以下是我現在在做什麼:Java處理多個可能未知的日期/時間格式
public static boolean isDateValid(String dateString)
{
ArrayList<SimpleDateFormat> dateFormats = new ArrayList<SimpleDateFormat>();
dateFormats.add(new SimpleDateFormat("M/dd/yyyy"));
dateFormats.add(new SimpleDateFormat("dd.M.yyyy"));
dateFormats.add(new SimpleDateFormat("M/dd/yyyy hh:mm:ss"));
dateFormats.add(new SimpleDateFormat("dd.M.yyyy hh:mm:ss"));
dateFormats.add(new SimpleDateFormat("dd-M-yyyy hh:mm:ss"));
dateFormats.add(new SimpleDateFormat("M-dd-yyyy hh:mm:ss"));
dateFormats.add(new SimpleDateFormat("yyyy-M-dd hh:mm:ss"));
dateFormats.add(new SimpleDateFormat("dd.MMM.yyyy"));
dateFormats.add(new SimpleDateFormat("dd-MMM-yyyy"));
dateFormats.add(new SimpleDateFormat("M/dd"));
dateFormats.add(new SimpleDateFormat("M dd"));
dateFormats.add(new SimpleDateFormat("M y"));
for (SimpleDateFormat format : dateFormats)
{
try
{
format.setLenient(false);
Date date = format.parse(dateString);
return true;
}
catch (Exception e)
{
}
}
return false;
}
另外我一直在使用DateUtils從Apache的百科全書也嘗試過,但似乎我還是會通過一串日期必須循環。
public static boolean isDate(String dateString)
{
try
{
Date theDate = DateUtils.parseDate(dateString);
}
catch (Exception e)
{
System.out.println(e);
return false;
}
return true;
}
任何想法或鼓勵的話?
你是什麼意思,「但似乎我仍然需要循環一堆日期。」 ? – 2013-04-20 01:33:34
對不起,我的意思是,我將不得不循環可能的格式仍然傳入日期。 – 2013-04-20 01:37:54