Android 试图分析日期会引发语法分析器错误

Android 试图分析日期会引发语法分析器错误,android,simpledateformat,Android,Simpledateformat,例如,我试图解析类型为2016年5月23日和2016年5月24日的日期 下面的代码演示了我是如何解析日期的 SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy"); Date validityDate = null; Date nextDueDate = null; try { validityDate = format1

例如,我试图解析类型为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处遇到了日期分析器错误。为什么会这样?

您需要使用两种不同的
SimpleDataFormat

对于2016年5月23日,您需要
新的SimpleDateFormat(“dd-MMM-yyyy”)


2016年5月24日,您需要
新的SimpleDateFormat(“dd-MMM-yyyy”)

您需要使用两种不同的
SimpleDataFormat

对于2016年5月23日,您需要
新的SimpleDateFormat(“dd-MMM-yyyy”)

2016年5月24日,您需要
新的SimpleDateFormat(“dd-MMM-yyyy”)

您正在使用模式“
dd-MM-yyyy
”,这意味着您正在尝试解析表单
12-05-2016
的日期

如果您需要解析一个日期,如“
2016年5月12日”
”,那么您必须为该月使用300万个字母,如下所示。“
dd-MMM-yyyy
”。 但是,如果解析日期“
12-06-2016
”,则会输出“
12-06-2016

如果你需要完整的月份,那么你应该使用400万个字母。例如:“
dd-MMMM-yyyy
”。然后它将输出
2016年6月12日

您正在使用模式“
dd-MM-yyyy
”,这意味着您正在尝试解析表单的日期
2016年5月12日

如果您需要解析一个日期,如“
2016年5月12日”
”,那么您必须为该月使用300万个字母,如下所示。“
dd-MMM-yyyy
”。 但是,如果解析日期“
12-06-2016
”,则会输出“
12-06-2016

如果你需要完整的月份,那么你应该使用400万个字母。例如:“
dd-MMMM-yyyy
”。然后它将输出
2016年6月12日