Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中验证范围?_Java_Android_Validation_Date_Android Studio - Fatal编程技术网

Java 如何在android中验证范围?

Java 如何在android中验证范围?,java,android,validation,date,android-studio,Java,Android,Validation,Date,Android Studio,我是Android编程新手,目前正在开发一款应用程序。如果用户输入的日期在7天范围内,是否有人可以帮助我验证该日期? 所以,我有两个字符串“startDay”和“endDay”,其中用户输入 起始日期=2017年1月2日 截止日期=2017年6月2日 然后它继续下一步。如果用户输入 起始日期=2017年1月2日 endDay=2017年9月2日,然后返回消息“最多7天” 这是我写的代码 @Override public void onClick(View v) { if (v==btn

我是Android编程新手,目前正在开发一款应用程序。如果用户输入的日期在7天范围内,是否有人可以帮助我验证该日期? 所以,我有两个字符串“startDay”和“endDay”,其中用户输入 起始日期=2017年1月2日 截止日期=2017年6月2日

然后它继续下一步。如果用户输入 起始日期=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();
        }



    }
}
但是当我输入 起始日期=2017年2月22日 截止日期=2017年2月25日

结果是“最多7天”,应返回到下一步


请帮助我..我也搜索过并尝试过,但没有得到这样的解决方案..

要比较您想要使用Java日期或日历对象的日期,但是像您这样从EditText读取初始日期是不安全的。如果您不验证输入,用户可以输入类似2016年2月2日的内容,而您预期的是2016年2月2日,因此您可能希望将其从自由格式的EditText更改为日期选择器,以便您可以控制用户首先输入日期的方式

一旦在一个受支持的Java对象中有了这两个日期,就可以将它们相互比较

我添加了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为您提供了两个日期之间的日差。

感谢您的想法和解决方案,我会尝试:非常感谢您,如果我尝试过,而且效果很好:我想问一下diff/24*60*60*1000。你能解释一下1000从哪里来吗?1000是毫秒。