当前位置: 首页 > 知识库问答 >
问题:

同一对话框上的日期时间选择器不接受minDate和maxDate

林德辉
2023-03-14

我以前在谷歌的同一个对话框上找到了日期和时间选择器的教程。我试图在日历上设置minDate和maxDate,但没有任何帮助。我想在用户打开对话框时选择日期,默认日期为当前日期前4天。为此我想

datePicker.setMinDate(System.currentTimeMillis() + 4);

但当我打开对话框时,什么都没有改变。代码有点长,我会尽量只发布我认为需要的内容。这是CustomDateTimePicker。java

public void showDialog() {
if (!dialog.isShowing()) {
    if (calendar_date == null)
        calendar_date = Calendar.getInstance();

    selectedHour = calendar_date.get(Calendar.HOUR_OF_DAY);
    selectedMinute = calendar_date.get(Calendar.MINUTE);

    timePicker.setIs24HourView(is24HourView);
    timePicker.setCurrentHour(selectedHour);
    timePicker.setCurrentMinute(selectedMinute);

    //
    datePicker.updateDate(calendar_date.get(Calendar.YEAR),
            calendar_date.get(Calendar.MONTH),
            calendar_date.get(Calendar.DATE));


    dialog.show();

    btn_setDate.performClick();
}
}

public void setAutoDismiss(boolean isAutoDismiss) {
    this.isAutoDismiss = isAutoDismiss;
}

public void dismissDialog() {
   if (!dialog.isShowing())
      dialog.dismiss();
 }

public void setDate(Calendar calendar) {
   if (calendar != null)
    calendar_date = calendar;
}

 public void setDate(Date date) {
   if (date != null) {
    calendar_date = Calendar.getInstance();
    calendar_date.setTime(date);
  }
 }

 public void setDate(int year, int month, int day) {
   if (month < 12 && month >= 0 && day < 32 && day >= 0 && year > 100
        && year < 3000) {
    calendar_date = Calendar.getInstance();
    calendar_date.set(year, month, day);

  }

 }

 public void setTimeIn24HourFormat(int hourIn24Format, int minute) {
 if (hourIn24Format < 24 && hourIn24Format >= 0 && minute >= 0
        && minute < 60) {
    if (calendar_date == null)
        calendar_date = Calendar.getInstance();

    calendar_date.set(calendar_date.get(Calendar.YEAR),
            calendar_date.get(Calendar.MONTH),
            calendar_date.get(Calendar.DAY_OF_MONTH), hourIn24Format,
            minute);

    is24HourView = true;
  }
}

这是在主活动中

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    custom = new CustomDateTimePicker(this,
            new CustomDateTimePicker.ICustomDateTimeListener() {

                @Override
                public void onSet(Dialog dialog, Calendar calendarSelected,
                        Date dateSelected, int year, String monthFullName,
                        String monthShortName, int monthNumber, int date,
                        String weekDayFullName, String weekDayShortName,
                        int hour24, int hour12, int min, int sec,
                        String AM_PM) {
                    ((EditText) findViewById(R.id.datePicker)).setText(calendarSelected.get(Calendar.DAY_OF_MONTH)
                                    + "-" + (monthNumber+1) + "-" + year
                                    + " " + hour24 + ":" + min);              
                }

                @Override
                public void onCancel() {

                }
            });

    /**
     * Pass Directly current time format it will return AM and PM if you set
     * false
     */
    custom.set24HourFormat(false);
    /**
     * Pass Directly current data and time to show when it pop up
     */
    custom.setDate(Calendar.getInstance());

    findViewById(R.id.btnCalendar).setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {                       
                    custom.showDialog();
                }

});           

我相信这是我需要修复的部分,但无法得到它的准确程度。如果需要,这里是CustomDateTimePicker的完整代码。java-

共有1个答案

左丘恩
2023-03-14
datePicker.setMinDate(System.currentTimeMillis() + 4);

您将向当前时间添加4毫秒并将其作为minDate传递。要解决这个问题,您必须将4天转换为毫秒并将其添加到当前时间中。

 类似资料:
  • 如何在同一对话框中显示日期选取器和时间选取器?如果我使用 应该做什么MainAcitiviy.java我是Android新手。我搜索了,但没有得到任何东西,,

  • 我正在尝试实现日期选择器对话框,但该对话框显示只有一个日期,并显示日期的其余部分为空白,这可能是什么原因?

  • 我试图在Android中创建一个日期对象,从日期选择器和时间选择器。我知道如何单独进行,但当我想使用日期选择器和时间选择器创建单个日期对象时 我试过这个 但是没有运气,因为它已被弃用。有人能给我指出一个资源吗?

  • 问题内容: 我创建了一个活动,其中有一个用于插入用户出生日期的字段。我已经使用日期选择器来实现此目的。 这是我正在做的源代码: 现在,我要做的是将日期选择器限制为特定年份。 像这样: 我应该怎么做才能将上述边界设置为日期选择器? // - - - - - - - - 编辑 - - - - - - - - - - - - - - 我做了这样的事情: 这是固定上限,但下限或minDate尚未固定! 什

  • 我在活动中使用了一个类来创建日期选择器对话框,它一直在工作,直到我迁移到android studio。以下是课程: 类StartDatePicker现在引发了一个错误:这个片段类应该是公共的。在我将其声明为public之后,它引发了另一个错误:这个片段内部类应该是静态的。我不想将其声明为静态的,因为私有void showDate(int year,int month,int day,int day

  • 日期时间选择器是一个定制的picker,因此他的用法和picker完全一致。打开picker的默认值是当前时间,可以通过value参数指定 datetime-picker 定制了 onChange 和 cols 参数,请不要设置这两个参数。 <input type="text" id='datetime-picker'/> <script>   $("#datetime-picker").da