2017-02-12 36 views
0

我是新來的Android編程,我目前正在開發一個應用程序。如果用戶輸入的日期在7天內,有人可以幫助我驗證日期嗎? 所以,我有兩個字符串「朝九特派」和「endday指定」,其中用戶輸入 朝九特派= 2017年1月2日 endday指定= 2017年6月2日如何在android中驗證範圍?

那麼它繼續下一個步驟。並且如果用戶輸入 朝九特派= 2017年1月2日 endday指定= 2017年9月2日,然後將其返回消息「最多7天

有,我提出

@Override 
public void onClick(View v) { 

    if (v==btnSearch){ 

     String startDaystr = startDay.getText().toString(); 
     String startMonthtstr = startMonth.getText().toString(); 
     String endDaystr = endDay.getText().toString(); 
     String endMonthstr = endMonth.getText().toString(); 
     String endYearstr = endYear.getText().toString(); 



     if(Integer.valueOf(startDaystr) >1 && Integer.valueOf(endDaystr) < 8){ 
      sharedPreferenceCustom = SharedPreferenceCustom.getInstance(getContext()); 
      sharedPreferenceCustom.putSharedPref("startDay", startDaystr); 
      sharedPreferenceCustom.putSharedPref("startMonth",startMonthtstr); 
      sharedPreferenceCustom.putSharedPref("endDay",endDaystr); 
      sharedPreferenceCustom.putSharedPref("endMonth",endMonthstr); 
      sharedPreferenceCustom.putSharedPref("endYear",endYearstr); 
      startActivity(new Intent(getActivity(), activity_history.class)); 
     }else{ 
      Toast.makeText(getActivity(), "Maximum 7 days!", Toast.LENGTH_LONG).show(); 
     } 



    } 
} 

但是當IM代碼輸入 朝九特派= 22/2/2017 endday指定= 25/2/2017

結果爲最多7天,應該回歸到下一步

請幫助me..im搜索並嘗試也沒有得到這樣的解決方案..

回答

0

我加了startYearStr,請注意。 使用下面的代碼:

String startDaystr = startDay.getText().toString(); 
String startMonthtstr = startMonth.getText().toString(); 
String startYearstr = startYear.getText().toString(); 

String endDaystr = endDay.getText().toString(); 
String endMonthstr = endMonth.getText().toString(); 
String endYearstr = endYear.getText().toString(); 


Calendar startDate = Calendar.getInstance(); 
startDate.set(Calendar.DAY_OF_MONTH, Integer.parseInt(startDaystr)); 
startDate.set(Calendar.MONTH, Integer.parseInt(startMonthtstr)); 
startDate.set(Calendar.YEAR, Integer.parseInt(startYearstr)); 
startDate.set(Calendar.HOUR_OF_DAY, 0); 
startDate.set(Calendar.MINUTE, 0); 
startDate.set(Calendar.SECOND, 0); 

Calendar endDate = Calendar.getInstance(); 
endDate.set(Calendar.DAY_OF_MONTH, Integer.parseInt(endDaystr)); 
endDate.set(Calendar.MONTH, Integer.parseInt(endMonthstr)); 
endDate.set(Calendar.YEAR, Integer.parseInt(endYearstr)); 
endDate.set(Calendar.HOUR_OF_DAY, 0); 
endDate.set(Calendar.MINUTE, 0); 
endDate.set(Calendar.SECOND, 0); 

long diff = endDate.getTimeInMillis() - startDate.getTimeInMillis(); 
long dayCount = diff/(24 * 60 * 60 * 1000); 

dayCount給你兩個日期之間的天差。

+0

非常感謝你Asif,我試了一下,它完美的作品。 :)我想問一下diff /(24 * 60 * 60 * 1000)。你能向我解釋1000從哪裏來? – Jane

+0

1000是毫秒。 –

0

要比較日期,你想要使用Java DateCalendar對象,但從你正在做的EditText讀取初始日期並不安全。如果您未驗證輸入內容,則當您預計「2/2/2016」時,用戶可能會輸入諸如「2016年2月2日」之類的內容,因此您可能希望將其從自由格式EditText更改爲日期選擇器,以便您可以控制用戶如何首先輸入日期。

在受支持的Java對象中有兩個日期後,您可以將它們相互比較。 This answer has an example how to do the comparison.

+0

謝謝你的想法和解決方案,我會試試:) – Jane