2016-04-05 52 views
1

我試着解析式的日期23月 - 2016年24 2016年5月例如..試圖解析一個日期引發分析器錯誤

下面的代碼演示如何即時解析的日期。

SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy"); 
      Date validityDate = null; 
      Date nextDueDate = null; 
      try { 
       validityDate = format1.parse(mValidityDate.getText().toString()); 
       nextDueDate = format1.parse(mNextDueDate.getText().toString()); 
       int validate = validate(validityDate, nextDueDate); 
      } catch (Exception ex) { 
       Toast.makeText(getApplicationContext(),ex.toString(),Toast.LENGTH_SHORT).show(); 
      } 

以下是查找兩個日期之間差異數的代碼。

public static int validate(Date valid, Date nextDueDate) { 
     return (int) ((nextDueDate.getTime() - valid.getTime())/(1000 * 60 * 60 * 24l)); 
    } 

問題是,我得到日期解析器錯誤在偏移量3。爲什麼這樣呢?

回答

1

您需要使用兩個不同的SimpleDateFormat

對於日期23日-2016需要new SimpleDateFormat("dd-MMM-yyyy");

對於日期24 2016年5月你需要new SimpleDateFormat("dd-MMM yyyy");

1

您正在使用模式「dd-MM-yyyy」,這意味着您正試圖解析表格12-05-2016的日期。

如果您需要解析日期,例如「12-May-2016」,那麼您必須按如下所示使用本月的3M字母。 「dd-MMM-yyyy」。 但是,如果解析日期「12-06-2016」,則會輸出「12-Jun-2016」。

如果你需要整整一個月,那麼你應該使用4M字母。例如:「dd-MMMM-yyyy」。然後它會輸出12-June-2016