简体   繁体   English

如何在android中检查所选日期比当前日期多8天

[英]How to check selected date is 8 days more than current date in android

I am working on a functionality in which I want to select date that is 8 days more than the current date.我正在研究一个功能,我想选择比当前日期多 8 天的日期。 I have implemented a case but it is not working in some cases.我已经实施了一个案例,但在某些情况下它不起作用。 Please help请帮忙

I am getting wrong data in some cases.在某些情况下,我收到错误的数据。

// code for the same // 相同的代码

// code to get start date // 获取开始日期的代码

    start_date.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    final Calendar c = Calendar.getInstance();
                    mYear = c.get(Calendar.YEAR);
                    mMonth = c.get(Calendar.MONTH);
                    mDay = c.get(Calendar.DAY_OF_MONTH);


                    DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {


                                    monthOfYear = monthOfYear + 1;
                                    mDay = mDay;
                                    selectedDate = dayOfMonth;


                                    Log.e("TAG", "onDateSet: "+dayOfMonth +"%%"+mDay );

                                 /*date code starts*/
                                    if (dayOfMonth > mDay + 8) {
                                        if (mDay > 20 && monthOfYear == 2) {
                                            if (monthOfYear == 3) {
                                                start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);
                                            } else {
                                                Toast.makeText(getActivity(), "change your month", Toast.LENGTH_SHORT).show();

                                            }
                                        } else if (mDay > 22 && monthOfYear != 2) {
                                            if (monthOfYear > monthOfYear + 1 && monthOfYear == 12) {
                                                if (monthOfYear == 1 && year == year + 1) {
                                                    start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);

                                                } else {
                                                    Toast.makeText(getActivity(), "change year", Toast.LENGTH_SHORT).show();

                                                }
                                            } else if (monthOfYear == monthOfYear + 1) {
                                                start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);

                                            } else {
                                                Toast.makeText(getActivity(), "select proper month", Toast.LENGTH_SHORT).show();

                                            }
                                        } else {
                                            start_date.setText(dayOfMonth + "-" + (monthOfYear) + "-" + year);

                                        }

                                    } else {
                                        Toast.makeText(getActivity(), getResources().getString(R.string.selectDate8days), Toast.LENGTH_SHORT).show();
                                    }


                                 /*end*/


                                }
                            }, mYear, mMonth, mDay);
                    datePickerDialog.show();

                    break;
                case MotionEvent.ACTION_UP:
                    break;

            }


            return true;

        }


    });

This is the code that I have implemented.这是我已经实现的代码。

start_date.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    final Calendar c = Calendar.getInstance();
                    mYear = c.get(Calendar.YEAR);
                    mMonth = c.get(Calendar.MONTH);
                    mDay = c.get(Calendar.DAY_OF_MONTH);

                    DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
                                    int myear = year;
                                    int mmonth = monthOfYear + 1;
                                    int mday = dayOfMonth;

                                   String mDate = mday + "/" + mmonth + "/" + myear;

                                    if (show(mDate) > 8) {
                                       Toast.makeText(getActivity(), "Selected date is greater than 8 days", Toast.LENGTH_SHORT).show();
                                    } else {
                                        Toast.makeText(getActivity(), "Selected date is less than 8 days", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            }, mYear, mMonth, mDay);
                    datePickerDialog.show();

                    break;
                case MotionEvent.ACTION_UP:
                    break;
            }
            return true;
        }
    });


private int show(String time) {
        try {
            String outputPattern = "dd/MM/yyyy";
            SimpleDateFormat format = new SimpleDateFormat(outputPattern);

            Date Date1 = format.parse(getdate());
            Date Date2 = format.parse(time);
            long mills = Date2.getTime() - Date1.getTime();
            long Day1 = mills / (1000 * 60 * 60);

            day = (int) Day1 / 24;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return day;
    }


    private String getdate() {
        String time = "";
        try {
            String outputPattern = "dd/MM/yyyy";

            Calendar c = Calendar.getInstance();
            SimpleDateFormat df = new SimpleDateFormat(outputPattern);
            time = df.format(c.getTime());

        } catch (Exception e) {
            e.printStackTrace();
        }

        return time;
    }
long diffInMillisec =  currentdate.getTime()-registereddate.getTime();

        // Get difference between two dates in days
        long diffInDays = diffInMillisec / (24 * 60 * 60 * 1000);

if(diffInDays > 8){
    // Here your  code from when your current date is greater than 8 days..
}

To avoid month and year check:为避免月份和年份检查:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date todayStart = cal.getTime();
cal.add(Calendar.DATE, 8);
Date plus8Days = cal.getTime();
cal.add(Calendar.DATE, 1);
Date plus9Days = cal.getTime();

And then just check your selected date is between plus8Days and plus9Days .然后只需检查您选择的日期是在plus8Daysplus9Days之间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM