我试图解析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解析器错误。为什么会这样?
答案 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
形式的日期。
如果您需要解析诸如" 12-May-2016
"之类的日期,那么您必须按月使用3M字母。 " dd-MMM-yyyy
&#34 ;.
但是,如果您解析日期" 12-Jun-2016
",则会输出" 12-06-2016
"。
如果您需要完整的月份,则应使用4M字母。例如:" dd-MMMM-yyyy
"。然后它将输出12-June-2016
。