如何根据日期选择器安卓工作室设置最大时间选择器限制



如何在特定日期设置限制最大时间选择器?当我在日期选择器中选择星期六时,时间选择器在 12.00 中设置限制最大小时数。但是,如果我在其他日期选择日期选择器,则时间选择器在 15.00(正常(中设置最大小时数限制。我使用这个波纹管代码但失败了,当我选择星期六总是假时。

   if( calendarToday.get( Calendar.DAY_OF_WEEK ) == Calendar.SATURDAY){

日期拾取器((

public void datePicker() {
   final Calendar calendarMax = Calendar.getInstance();
   calendarMax.add(Calendar.DAY_OF_MONTH, 7);
   final Calendar calendarToday = Calendar.getInstance();
   int year    = calendarToday.get(Calendar.YEAR);
   int month   = calendarToday.get(Calendar.MONTH);
   int day     = calendarToday.get(Calendar.DAY_OF_MONTH);
   DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(FormBooking.this, year, month, day);
   datePickerDialog.setMinDate(calendarToday);
   datePickerDialog.setMaxDate(calendarMax);
   //sunday off
   List<Calendar> daysList = new LinkedList<>();
   Calendar[] daysArray;
   Calendar cAux = Calendar.getInstance();
   while( calendarToday.getTimeInMillis() <= calendarMax.getTimeInMillis() ){
       if( calendarToday.get( Calendar.DAY_OF_WEEK ) != Calendar.SUNDAY){
           Calendar c = Calendar.getInstance();
           c.setTimeInMillis( calendarToday.getTimeInMillis() );
           daysList.add( c );
       }
       calendarToday.setTimeInMillis( calendarToday.getTimeInMillis() + ( 24 * 60 * 60 * 1000 ) );
   }
   daysArray = new Calendar[ daysList.size() ];
   for( int i = 0; i < daysArray.length; i++ ){
       daysArray[i] = daysList.get(i);
   }
   datePickerDialog.setSelectableDays( daysArray );
   datePickerDialog.vibrate(true);
   datePickerDialog.show( getFragmentManager(), "DatePickerDialog" );
}

onDataSet((

public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
   int bulan = (++monthOfYear);
   String day_string = String.valueOf(dayOfMonth);
   String month_string = String.valueOf(bulan);
   if (dayOfMonth < 10) {
      day_string = "0" + String.valueOf(dayOfMonth);
   }
   if (bulan < 10) {
      month_string = "0" + String.valueOf(bulan);
   }
   Calendar selectedDate =  Calendar.getInstance();
   int mYear   = selectedDate.get(Calendar.YEAR);
   int mMonth  = selectedDate.get(Calendar.MONTH);
   int mDay    = selectedDate.get(Calendar.DAY_OF_MONTH);
   String D    = String.valueOf(mDay);
   if(String.valueOf(dayOfMonth).equals(D)){    //if choose today
       if(selectedDate.get(Calendar.HOUR_OF_DAY)>6 && selectedDate.get(Calendar.HOUR_OF_DAY)<15) {
           if(selectedDate.get(Calendar.HOUR_OF_DAY)==14 && selectedDate.get(Calendar.MINUTE)>30) {
               input_time.setText("");
           } else {
               timePicker(true);
           }
       }else if(selectedDate.get(Calendar.HOUR_OF_DAY)>0 && selectedDate.get(Calendar.HOUR_OF_DAY)<7) {
           timePicker(true);
       }else{
           input_time.setText("");
       }
   }else{
       timePicker(false);
   }
   input_date.setText("");
   input_date.setText(day_string + "." + month_string + "." + year);
}

timePicker((

public void timePicker(boolean isTodayDate){
   int minHour = 8;
   int maxHour = 15;    //max hour, if saturday is 12, but other day, normal maxHour 15
   Calendar now = Calendar.getInstance();
   TimePickerDialog timepickerdialog = TimePickerDialog.newInstance(
        FormBooking.this,
        now.get(Calendar.HOUR_OF_DAY),
        now.get(Calendar.MINUTE),
        true);
   if(isTodayDate){ //if choose today
       if(now.get(Calendar.HOUR_OF_DAY)>6 && now.get(Calendar.HOUR_OF_DAY)<15){
           if(now.get(Calendar.MINUTE)>=0 && now.get(Calendar.MINUTE)<61) {
               minHour = now.get(Calendar.HOUR_OF_DAY) + 1;
           }
       }else if(now.get(Calendar.HOUR_OF_DAY)>0 && now.get(Calendar.HOUR_OF_DAY)<7){
           minHour = 8;
       }
   }
   timepickerdialog.setMinTime(minHour, 0, 0);
   timepickerdialog.setMaxTime(maxHour, 0, 0);
   timepickerdialog.setThemeDark(false);
   timepickerdialog.vibrate(false);
   timepickerdialog.dismissOnPause(false);
   timepickerdialog.show(getFragmentManager(), "Timepickerdialog");
}

您可以使用以下代码检查所选日期是星期六或不

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, monthOfYear);// you have increased value of monthOfYear by using ++monthOfYear so you have to use monthOfYear-1
cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
isSaturday = cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY;

并将这个布尔值传递给你的 timePicker(false, isSaturday( 函数。在时间选择器函数中,您可以设置 maxHours:

int maxHour = 15;
if(isSaturday){ 
    maxHour=12 
}

最新更新