我正在使用一种方法计算两个日期之间的天数差异。在执行计算之前,需要将日期字符串转换为日期,这导致我出现问题。
public static int difDate(String data1, String data2) throws ParseException{
GregorianCalendar ini = new GregorianCalendar();
GregorianCalendar fim = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/yyyy");
ini.setTime(sdf.parse(data1));
fim.setTime(sdf.parse(data2));
long dt1 = ini.getTimeInMillis();
long dt2 = fim.getTimeInMillis();
return (int) (((dt2 - dt1) / 86400000)+1);
}
此代码生成异常:
12-26 07:31:38.027: E/AndroidRuntime(11452): FATAL EXCEPTION: main
12-26 07:31:38.027:E / AndroidRuntime(11452):java.lang.IllegalStateException:无法执行活动的方法 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.view.View $ 1.onClick(View.java:3673) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.view.View.performClick(View.java:4278) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.view.View $ PerformClick.run(View.java:17430) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.os.Handler.handleCallback(Handler.java:725) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.os.Handler.dispatchMessage(Handler.java:92) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.os.Looper.loop(Looper.java:213) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.app.ActivityThread.main(ActivityThread.java:5092) 12-26 07:31:38.027:E / AndroidRuntime(11452):at java.lang.reflect.Method.invokeNative(Native Method) 12-26 07:31:38.027:E / AndroidRuntime(11452):at java.lang.reflect.Method.invoke(Method.java:511) 12-26 07:31:38.027:E / AndroidRuntime(11452):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:797) 12-26 07:31:38.027:E / AndroidRuntime(11452):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564) 12-26 07:31:38.027:E / AndroidRuntime(11452):at dalvik.system.NativeStart.main(Native Method) 12-26 07:31:38.027:E / AndroidRuntime(11452):引起:java.lang.reflect.InvocationTargetException 12-26 07:31:38.027:E / AndroidRuntime(11452):at java.lang.reflect.Method.invokeNative(Native Method) 12-26 07:31:38.027:E / AndroidRuntime(11452):at java.lang.reflect.Method.invoke(Method.java:511) 12-26 07:31:38.027:E / AndroidRuntime(11452):在android.view.View $ 1.onClick(View.java:3668) 12-26 07:31:38.027:E / AndroidRuntime(11452):... 11更多 12-26 07:31:38.027:E / AndroidRuntime(11452):引起:java.text.ParseException:无法解析的日期:“26.11.2013”(偏移2处) 12-26 07:31:38.027:E / AndroidRuntime(11452):at java.text.DateFormat.parse(DateFormat.java:622) 12-26 07:31:38.027:E / AndroidRuntime(11452):at com.sisteplantbrasil.util.DateHelper.DiferencaEntreDatas(DateHelper.java:58) 12-26 07:31:38.027:E / AndroidRuntime(11452):at com.sisteplantbrasil.WorkOrderHistoricFilter.onBtnActionClick(WorkOrderHistoricFilter.java:222) 12-26 07:31:38.027:E / AndroidRuntime(11452):... 14更多
任何人都知道如何解决这个问题?
ini.setTime(sdf.parse(data1));
谢谢!
答案 0 :(得分:3)
您的输入是26.11.2013而不是26/11/2013。更改输入的格式或更改创建SimpleDateFormat
SimpleDateFormat(dd/MM/yyyy);
到
SimpleDateFormat(dd.MM.yyyy);
这就是它抛出此异常的原因