/ / Como faço para mudar o fuso horário no android? - android, hora, diálogo, selecionador, zona

Como faço para mudar o fuso horário no android? - android, hora, diálogo, selecionador, zona

Eu tenho um texto de edição com seletor de tempo. Quando clicamos no texto de edição, obtendo a caixa de diálogo do selecionador de tempo. Se eu selecionar 22:00, o texto de edição deve exibir 22:00, mas estou chegando às 22:00 PM. Como posso mudar isto? Minha parte de codificação dada abaixo ..

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

}

Respostas:

0 para resposta № 1

Observe que você está apenas modificando hourOfDay Como hourOfDay -= 12; Portanto, você precisa usar a mesma variável em seu setText() chamar bem porque hour ainda se refere ao valor original do formato de 24 horas.

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

Por favor, use a API Java DateTime ao invés de empregar matemática para converter do formato de 24 horas (que o onTimeSet() parâmetros entram) para o AM / PM. Os casos de borda (como 00:00) são mais difíceis de exibir de outra forma. Aqui está como eu sugiro que você faça isso.

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

Confira a SimpleDateFormat docs para mais informações.