/ / Jak zmienić strefę czasową w Androidzie? - Android, czas, okno dialogowe, próbnik, strefa

Jak zmienić strefę czasową w systemie Android? - Android, czas, okno dialogowe, selektor, strefa

Mam tekst edycji z funkcją wyboru czasu. Kiedy kliknąłem okno edycji tekstu, pojawiło się okno wyboru czasu. Jeśli wybiorę 22:00, edytuj tekst powinien wyświetlać 22:00, ale dostaję 22:00. Jak mogę to zmienić? Moja część kodująca podana poniżej ..

 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();

}

Odpowiedzi:

0 dla odpowiedzi № 1

Zauważ, że modyfikujesz tylko hourOfDay tak jak hourOfDay -= 12; Dlatego musisz użyć tej samej zmiennej w swoim setText() zadzwoń również, ponieważ hour nadal odnosi się do oryginalnej 24-godzinnej wartości formatu.

@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);
}

Proszę użyć Java DateTime API zamiast matematyki do konwersji z formatu 24-godzinnego (że onTimeSet() parametry wchodzą) do AM / PM. Przypadki krawędzi (jak 00:00) są trudniejsze do wyświetlenia inaczej. Oto jak sugerowałbym ci to zrobić.

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()));

Sprawdź SimpleDateFormat dokumenty, aby uzyskać więcej informacji.