【问题标题】:last date of the month not being displayed in DatePickerDialogDatePickerDialog 中未显示该月的最后一个日期
【发布时间】:2019-10-03 04:18:45
【问题描述】:

我正在使用DatePickerDialog 选择日期。当月份从一周的最后一天开始,并且有 31 天时,它不显示该月的最后一天。例如,2019 年 12 月从星期日开始,不显示日期 30 日和 31 日。

我尝试设置datepickerdialog.setFirstDayOfWeek(Calender.SUNDAY)。从星期六开始的几个月内,此问题将保持不变。

dpd = DatePickerDialog.newInstance(
                    JobAssignedActivity.this,
                    now.get(Calendar.YEAR),
                    now.get(Calendar.MONTH),
                    now.get(Calendar.DAY_OF_MONTH)
            );


            Calendar minDate = Calendar.getInstance();
 dpd.setMinDate(minDate);
            dpd.setFirstDayOfWeek(Calendar.SUNDAY);
            dpd.setAccentColor(ContextCompat.getColor(this, R.color.mdtp_accent_color));
            dpd.show(getFragmentManager(), "Datepickerdialog");

如何显示当月的最后一行?

【问题讨论】:

    标签: java android datepickerdialog


    【解决方案1】:

    试试这个,它会给出正确的输出

    DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
    
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
            Log.v("onDateSet",dayOfMonth+"/"+(monthOfYear+1)+"/"+year);
        }
    
    };
    
    final Calendar cal = Calendar.getInstance();
    new DatePickerDialog(YourActivity.this, onDateSetListener, 
        cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.get(Calendar.DAY_OF_MONTH)).show();
    

    【讨论】:

    • 感谢@Ankit,但我得到了相同的输出。
    【解决方案2】:

    试试这个,先声明 DatePickerDialog

    Calendar Calendar1 = Calendar.getInstance();
    DatePickerDialog dpdialog = new DatePickerDialog(JobAssignedActivity.this, date, Calendar1
       .get(Calendar.YEAR), Calendar1.get(Calendar.MONTH),
       Calendar1.get(Calendar.DAY_OF_MONTH));
    dpdialog.getDatePicker().setMinDate(new Date().getTime());
    dpdialog.show(); //put this whenever you want show the dialog
    

    并在 oncreate 之外添加日期侦听器方法。

    final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                Calendar1.set(Calendar.YEAR, year);
                Calendar1.set(Calendar.MONTH, monthOfYear);
                Calendar1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateCalendar1(); //whatever function/method you need after selecting a date
            }
    
        };
    

    您的操作。

    private void updateCalendar1() {
            String myFormat = "MM/dd/yyyy";
            SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    
            etdate.setText(sdf.format(Calendar1.getTime()));
        }
    

    【讨论】:

    • 在此代码中,您只能将dpdialog.getDatePicker().setMinDate(new Date().getTime()); 更改为dpdialog.getDatePicker();
    【解决方案3】:

    如果你使用这个com.wdullaer.materialdatetimepicker设计日期选择器如果你设置日期选择器的版本dpd.setVersion(DatePickerDialog.Version.VERSION_1);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多