/ / Wie ändere ich die Zeitzone in Android? - Android, Zeit, Dialog, Picker, Zone

Wie ändere ich die Zeitzone in Android? - Android, Zeit, Dialog, Auswahl, Zone

Ich habe einen Bearbeitungstext mit Zeitauswahl. Wenn ich auf den Editiertext geklickt habe, wird der Dialog zur Zeitauswahl angezeigt. Wenn ich 22:00 Uhr auswähle, sollte der Text für die Bearbeitung 22:00 Uhr anzeigen, aber ich bekomme 22:00 Uhr. Wie kann ich das ändern? Mein Coding-Teil ist unten angegeben ..

 protected void showTime()
{
TimePickerDialog tpd = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener()
{

@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute)
{
hour=hourOfDay;
min=minute;

if(hourOfDay>12)
{
hourOfDay -= 12;
zone = "PM";
}
else
{
zone = "AM";
}
edtTime.setText(" "+pad(hour) + ":" + min+ " "+zone);
}
}, hour, min, true);
tpd.setTitle("Select Time");
tpd.show();

}

Antworten:

0 für die Antwort № 1

Beachten Sie, dass Sie nur Änderungen vornehmen hourOfDay wie hourOfDay -= 12; Daher müssen Sie dieselbe Variable in Ihrem verwenden setText() rufen Sie auch an, weil hour bezieht sich immer noch auf den ursprünglichen 24-Stunden-Formatwert.

@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute)
{
hour=hourOfDay;
min=minute;

if(hourOfDay>12)
{
hourOfDay -= 12;
zone = "PM";
}
else
{
zone = "AM";
}
edtTime.setText(" "+pad(hourOfDay) + ":" + min+ " "+zone);
}

Verwenden Sie bitte die Java DateTime-API, anstatt das mathematische Format für die Konvertierung aus dem 24-Stunden-Format (dh dem onTimeSet() Parameter kommen in) zu AM / PM ein. Die Randfälle (wie 00:00) sind sonst schwerer darzustellen. So würde ich Ihnen vorschlagen, es zu tun.

DateFormat df = new SimpleDateFormat("hh:mm a"); // [1-12]:[0-59] AM|PM

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);

edtTime.setText(df.format(cal.getTime()));

Besuche die SimpleDateFormat docs für weitere Informationen.