2016-09-26 115 views
-4

我正在开发一个应用程序,在这里我想使用日期和时间选择器,选择一个日期和时间,但我想在选择时间前6小时设置结果时间。在选择时间前6个小时,如何设置这个时间,并在相应的时间与时间相关? 例如: 如果我选择日期假设“30秒”,时间是“上午1:00”,那么我想显示的日期和时间将是“29秒”和“7:00 pm”。 我该怎么办? 我使用下面的代码:如何在选择时间和日期前6小时设置日期和时间?

@Override 
    public void onClick(View v) { 

     if (v == pdate) { 

      // Get Current Date 
      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(this, 
        new DatePickerDialog.OnDateSetListener() { 

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

          eddate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); 

         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
     if (v == ptime) { 

      // Get Current Time 
      final Calendar c = Calendar.getInstance(); 
      mHour = c.get(Calendar.HOUR_OF_DAY); 
      mMinute = c.get(Calendar.MINUTE); 

      // Launch Time Picker Dialog 
      TimePickerDialog timePickerDialog = new TimePickerDialog(this, 
        new TimePickerDialog.OnTimeSetListener() { 

         @Override 
         public void onTimeSet(TimePicker view, int hourOfDay, 
               int minute) { 


          edtime.setText(hourOfDay + ":" + minute); 
          if(hourOfDay==00) 
          { 
           tvpicktime.setText((17) + ":" + minute); 

          } 
          else if(hourOfDay==1) 
          { 
           tvpicktime.setText((18) + ":" + minute); 
          } 
          else if(hourOfDay==2) 
          { 
           tvpicktime.setText((19) + ":" + minute); 
          } 
          else if(hourOfDay==3) 
          { 
           tvpicktime.setText((20) + ":" + minute); 
          } 
          else if(hourOfDay==4) 
          { 
           tvpicktime.setText((21) + ":" + minute); 
          } 
          else if(hourOfDay==5) 
          { 
           tvpicktime.setText((22) + ":" + minute); 
          } 
          else if(hourOfDay==6) 
          { 
           tvpicktime.setText((23) + ":" + minute); 
          } 
          else if(hourOfDay==7) 
          { 
           tvpicktime.setText((00) + ":" + minute); 
          } 
          else if(hourOfDay==8) 
          { 
           tvpicktime.setText((01) + ":" + minute); 
          } 
          else if(hourOfDay==9) 
          { 
           tvpicktime.setText((02) + ":" + minute); 
          } 
          else if(hourOfDay==10) 
          { 
           tvpicktime.setText((03) + ":" + minute); 
          } 
          else if(hourOfDay==11) 
          { 
           tvpicktime.setText((04) + ":" + minute); 
          } 
          else if(hourOfDay==12) 
          { 
           tvpicktime.setText((05) + ":" + minute); 
          } 
          if(hourOfDay==13) 
          { 
           tvpicktime.setText((06) + ":" + minute); 
          } 
          else if(hourOfDay==14) 
          { 
           tvpicktime.setText((07) + ":" + minute); 
          } 
          else if(hourOfDay==15) 
          { 
           tvpicktime.setText((8) + ":" + minute); 
          } 
          else if(hourOfDay==16) 
          { 
           tvpicktime.setText((9) + ":" + minute); 
          } 
          else if(hourOfDay==17) 
          { 
           tvpicktime.setText((10) + ":" + minute); 
          } 
          else if(hourOfDay==18) 
          { 
           tvpicktime.setText((11) + ":" + minute); 
          } 
          else if(hourOfDay==19) 
          { 
           tvpicktime.setText((12) + ":" + minute); 
          } 
          else if(hourOfDay==20) 
          { 
           tvpicktime.setText((13) + ":" + minute); 
          } 
          else if(hourOfDay==21) 
          { 
           tvpicktime.setText((14) + ":" + minute); 
          } 
          else if(hourOfDay==22) 
          { 
           tvpicktime.setText((15) + ":" + minute); 
          } 
          else if(hourOfDay==23) 
          { 
           tvpicktime.setText((16) + ":" + minute); 
          } 
         } 
        }, mHour, mMinute, false); 

      timePickerDialog.show(); 
     } 

     } 

回答

0

在你的代码被删除7小时,你不改变天(如果是凌晨1点,您应该在前一天去,但无论如何,你可以简单地调用这个而不是你的switch语句:

c.add(Calendar.HOUR_OF_DAY, -6); 

这将增加-6小时,它会删除6小时

要在文本框显示结果

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/MM/yyyy"); 
myTextField.setText(simpleDate.format(c.getTime())); 
+0

但是约会日期??? .....我想根据我的取件时间日期! – rohiH

+0

@rohiH这将为你做一切。他将管理几小时,几天,几个月甚至几年(如01-01-2016)。因此,只需调用此代码即可完成:) –

+0

此代码在上午00:00至上午5:00提供问题,此处显示的是负值,也未显示正确的日期。 – rohiH

相关问题