2012-04-15 70 views
0

我對Android非常陌生。我在下面的格式如何在Android中以字符串格式比較日期?

2012-08-17 00:00:00 

我想比較這串與當前的日期找到年份,月份和日期的形式日期之間的差值得到字符串形式的日期從服務器。

我想在下面的代碼

Date currentDate = new Date(System.currentTimeMillis()); 
Log.v("@@@@@@@@@","Current Date: " + currentDate); 
Date passDate = new SimpleDateFormat().parse(passDateString); 
Log.v("@@@@@@@@@","Pass Date: " + passDate); 
dateDifference = passDate.compareTo(currentDate); 

它周圍玩,但它返回了以下異常

04-15 12:08:29.101: V/@@@@@@@@@(1161): Current Date: Sun Apr 15 12:08:29 GMT+01:00 2012 
04-15 12:08:29.101: W/System.err(1161): java.text.ParseException: Unparseable date: 2012-08-17 00:00:00 
04-15 12:08:29.111: W/System.err(1161):  at java.text.DateFormat.parse(DateFormat.java:645) 
04-15 12:08:29.111: W/System.err(1161):  at org.apis.PassesListItemAdapter.getView(PassesListItemAdapter.java:77) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.ListView.makeAndAddView(ListView.java:1727) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.ListView.fillDown(ListView.java:652) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.ListView.fillFromTop(ListView.java:709) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.ListView.layoutChildren(ListView.java:1580) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.AbsListView.onLayout(AbsListView.java:1147) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.View.layout(View.java:7034) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.View.layout(View.java:7034) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.View.layout(View.java:7034) 
04-15 12:08:29.111: W/System.err(1161):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.View.layout(View.java:7034) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1049) 
04-15 12:08:29.111: W/System.err(1161):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1744) 
04-15 12:08:29.111: W/System.err(1161):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-15 12:08:29.111: W/System.err(1161):  at android.os.Looper.loop(Looper.java:144) 
04-15 12:08:29.111: W/System.err(1161):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
04-15 12:08:29.111: W/System.err(1161):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 12:08:29.111: W/System.err(1161):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-15 12:08:29.111: W/System.err(1161):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-15 12:08:29.111: W/System.err(1161):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-15 12:08:29.111: W/System.err(1161):  at dalvik.system.NativeStart.main(Native Method) 
+0

在Java中對日期進行抽取是一個非常討論的話題。我建議你[這個問答](http://stackoverflow.com/questions/3526485/how-do-you-subtract-dates-in-java)爲內置的Java方法和使用JodaTime的方法。 – 2012-04-15 11:48:17

+0

你有沒有得到它 – 2012-04-15 11:51:58

+0

是你的問題修復仍然面臨任何問題 – 2012-04-15 12:02:58

回答

1

添加要解析的日期格式:

passDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-08-17 00:00:00"); 
1
Date currentDate = new Date(System.currentTimeMillis()); 
Log.v("@@@@@@@@@","Current Date: " + currentDate); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date passDate = dateFormat.parse(passDateString); 
Log.v("@@@@@@@@@","Pass Date: " + passDate); 
dateDifference = passDate.compareTo(currentDate); 

使用此LINK以獲得兩個日期之間的差異,而現在您只是比較日期。

+0

你的代碼工作,但我得到的差異是不正確的。這裏是日誌04-15 12:39:42.701:V/@@@@@@ @@@(1421):當前日期:4月15日12:39:42 GMT + 01:00 2012 04-15 12:39:42.701:V/@@@@@@@@@(1421):Pass日期:8月23日星期四00:00:00 GMT + 01:00 2012 04-15 12:39:42.711:V/@@@@@@@@@(1421):日期差異:1 – Nik 2012-04-15 11:40:38

+0

您正在比較兩個日期沒有得到差異,你想根據你已經寫出相應的代碼,以月/日/周/毫秒爲單位進行差異 – 2012-04-15 11:42:23

+0

我希望得到你...你想說什麼...說我想要兩個日期之間的差異在幾天,幾個月和一年。如果不是所有的至少在我的天 – Nik 2012-04-15 11:44:36