【问题标题】:DatePicker showing month value starting from 0DatePicker 显示从 0 开始的月份值
【发布时间】:2018-07-04 07:37:49
【问题描述】:

我在一个activity 中使用了两个datepickers,一个用于start date,一个用于end date,每当我选择月份时,它都会显示错误的数字。我尝试将+1 添加到月份值,但由于有两个datepickers,我们必须跳过start date 之前的几天进行选择,所以它不起作用。代码如下:

public static class DatePickerFragment extends DialogFragment implements
        DatePickerDialog.OnDateSetListener {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        DatePickerDialog datePickerDialog;
        datePickerDialog = new DatePickerDialog(getActivity(), this, year,
                month, day);
        return datePickerDialog;
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user

        cval_from.setText(day + "/" + month + "/" + year);
    }
}

public static class ToDatePickerFragment extends DialogFragment implements
        DatePickerDialog.OnDateSetListener {
    // Calendar startDateCalendar=Calendar.getInstance();
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        String getfromdate = cval_from.getText().toString().trim();
        String getfrom[] = getfromdate.split("/");
        int year, month, day;
        year = Integer.parseInt(getfrom[2]);
        month = Integer.parseInt(getfrom[1]);
        day = Integer.parseInt(getfrom[0]);
        final Calendar c = Calendar.getInstance();
        c.set(year, month, day + 1);
        DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
        datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
        return datePickerDialog;
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        cval_to.setText(day + "/" + month + "/" + year);
    }

}

这里,cval_fromstart datecval_toend date,现在如果我在cval_from 中添加month+1,那么cval_to 的日期选择从下个月开始。例如,如果我为cval_from 选择26/1/2018,我必须从27/1/2018 开始选择cval_to。整个月被跳过。

谁能帮忙?

【问题讨论】:

标签: java android date datepicker


【解决方案1】:

根据developer.android.com,月份范围为0-11。

所以你需要将它增加 1。

public void onDateSet(DatePicker view, int year, int month, int day) {
    int selectedMonth = month+1;
    cval_to.setText(day + "/" + selectedMonth + "/" + year);
}

【讨论】:

    【解决方案2】:

    当您使用要在 DatePicker 中初始设置的方法中的开始日期发送日期以及结束日期并在单击时调用此方法时,您可以在不同的单击中使用两个日期选择器

    void selectDate(int mDay ,int mMonth,int mYear) {
    
        DatePickerDialog datePickerDialog = new DatePickerDialog(this,R.style.mydatetheame,
                new DatePickerDialog.OnDateSetListener() {
    
                    @Override
                    public void onDateSet(DatePicker view, int year,
                                          int monthOfYear, int dayOfMonth) {
    
                        tv_date.setText((monthOfYear + 1) + "/" + dayOfMonth + "/" + year);
    
                    }
                }, mYear, mMonth, mDay);
        datePickerDialog.show();
    
    }
    

    当然,通过这种方法你会得到一个正确的月份。

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 2018-10-24
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2010-11-15
      相关资源
      最近更新 更多