尝试解析日期会导致解析器错误

时间:2016-04-05 08:03:26

标签: android simpledateformat

我试图解析2016年5月23日和2016年5月24日类型的日期..

以下代码演示了如何解析日期。

  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处获得Date解析器错误。为什么会这样?

2 个答案:

答案 0 :(得分:1)

您需要使用两个不同的SimpleDateFormat

对于 23-May-2016 的日期,您需要new SimpleDateFormat("dd-MMM-yyyy");

对于 2016年5月24日的日期,您需要new SimpleDateFormat("dd-MMM yyyy");

答案 1 :(得分:1)

您正在使用模式" dd-MM-yyyy"这意味着您正在尝试解析12-05-2016形式的日期。

如果您需要解析诸如&#​​34; 12-May-2016"之类的日期,那么您必须按月使用3M字母。 " dd-MMM-yyyy&#34 ;. 但是,如果您解析日期" 12-Jun-2016",则会输出" 12-06-2016"。

如果您需要完整的月份,则应使用4M字母。例如:" dd-MMMM-yyyy"。然后它将输出12-June-2016