2016-08-31 3 views
0

Ich entwickle eine App, hier habe ich Datum und Uhrzeit Picker-Funktion erstellt.Jetzt möchte ich die Zeit mit Differenz von 6 Stunden vom ausgewählten Wert der Zeitauswahl zeigen.Wie erhalte ich Zeit Picker Wert mit Differenz von 6 Stunden durch ausgewählten Wert von Timepicker?

Ich benutze folgenden Code, um dies zu tun, aber es gibt ein falsches Ergebnis für die Auswahl der Werte zwischen 00:00 Uhr bis 06:00 Uhr morgens .i.e wenn ich 3am ausgewählt ist, dann zeigt es das Ergebnis -3. Wie löse ich das?

//java 

public class MainActivity extends AppCompatActivity implements 
    View.OnClickListener { 

Button btnDatePicker, btnTimePicker; 
EditText txtDate, txtTime; 
private int mYear, mMonth, mDay, mHour, mMinute; 
TextView tvpick; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btnDatePicker=(Button)findViewById(R.id.btn_date); 
    btnTimePicker=(Button)findViewById(R.id.btn_time); 
    txtDate=(EditText)findViewById(R.id.in_date); 
    txtTime=(EditText)findViewById(R.id.in_time); 
    tvpick=(TextView)findViewById(R.id.tvpicktime); 

    btnDatePicker.setOnClickListener(this); 
    btnTimePicker.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 

    if (v == btnDatePicker) { 

     // 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) { 

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

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

     // 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) { 

         txtTime.setText((hourOfDay) + ":" + minute); 

         tvpick.setText((hourOfDay+(-6))+ ":" + minute); 

    }, mHour, mMinute, false); 
     timePickerDialog.show(); 
    } 
} 


} 
+0

Meine Antwort Versuchen Sie, und lassen Sie meknow falls vorhanden Problem –

Antwort

1

die Sie interessieren ..

if (v == btnTimePicker) { 
Timepick 
} 

Timepick() Funktion

private void Timepick() { 


     mcurrentTime = Calendar.getInstance(); 
     int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
     int minute = mcurrentTime.get(Calendar.MINUTE); 
     System.out.print("mcurrentTime"+mcurrentTime.getTime()); 
     TimePickerDialog mTimePicker; 
     mTimePicker = new TimePickerDialog(demon.this, new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 

       Calendar cal = Calendar.getInstance(); 

       cal.set(Calendar.HOUR, selectedHour-6); 



       SimpleDateFormat simpleDateFormat = 
         new SimpleDateFormat("hh"); 


       try { 

        String datestring1= simpleDateFormat.format(mcurrentTime.getTime()); 
        String datestring2= simpleDateFormat.format(cal.getTime()); 
        Date date1 = simpleDateFormat.parse(datestring1); 

        Date date2 = simpleDateFormat.parse(datestring2); 
        long difference = date2.getTime()-date1.getTime(); 


        long diffSeconds = difference/1000 % 60; 
        long diffMinutes = difference/(60 * 1000) % 60; 
        long diffHours = difference/(60 * 60 * 1000); 
        int diffInDays = (int) ((date2.getTime() - date1.getTime())/(1000 * 60 * 60 * 24)); 


        editComment.setText(String.valueOf(diffHours)+":"+selectedMinute); 
       } catch (ParseException e) { 
        e.printStackTrace(); 
       } 







      } 
     }, hour, minute, true);//Yes 24 hour time 

     mTimePicker.setTitle("Select Time"); 
     mTimePicker.show(); 

     } 

Ergebnis

  • wenn 12.23 Ergebnis 06.23

  • wenn 22.50 Ergebnis 4:50

  • wenn 10.24 Ergebnis 4:24

Sie am pm verwalten können auch

+0

wow! Code funktioniert wirklich gut .. aber es ist ein Problem in Bezug auf Am und Pm.Wie kann ich das lösen? – rohiH

+0

Beispiel, wenn ich 02.00 Uhr eingegeben dann zeigt es 9 Uhr hier will ich Ergebnis als 9pm. – rohiH

1

Versuchen Sie, diese Logik in onTimeset

hourofDay= hourofDay-6; if(hourofDay<0){ hourofDay=24+hourofDay; }

es dann anzuzeigen ...

+0

hourOfDay = hourOfDay-6; if (hourOfDay> 0) { hourOfDay = 24 + hourOfDay; tvpick.setText (hourOfDay + ":" + Minute); – rohiH

+0

Ich habe den obigen Code verwendet, aber es zeigt kein korrektes Ergebnis – rohiH

+0

Was ist das Problem, vor dem Sie stehen ... – raasesh

0

wenn Sie genaue Datum und die Uhrzeit werden soll. Sie können die ausgewählte Zeit in Millisekunden umwandeln und ihr Millisekunden hinzufügen (in Ihrem Fall 6 Stunden Millis) und sie in die Zeit zurückkonvertieren.

+0

Wie geht das? – rohiH

Verwandte Themen