/ / Comment changer de fuseau horaire dans Android? - Android, heure, dialogue, sélecteur, zone

Comment changer de fuseau horaire dans Android? - Android, heure, dialogue, sélecteur, zone

J'ai un texte édité avec sélecteur de temps. Lorsque j'ai cliqué sur le texte d'édition, la boîte de dialogue de sélection du temps Si je sélectionne 22h00, le texte modifié doit afficher 22h00, mais je reçois 22h00. Comment puis-je changer cela? Ma partie de codage donnée ci-dessous ..

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

}

Réponses:

0 pour la réponse № 1

Notez que vous ne faites que modifier hourOfDay comme hourOfDay -= 12; Par conséquent, vous devez utiliser la même variable dans votre setText() appeler aussi parce que hour fait toujours référence à la valeur du format original de 24 heures.

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

Veuillez utiliser l'API Java DateTime au lieu d'utiliser des mathématiques pour convertir le format 24 heures (que le format onTimeSet() paramètres entrent) à celui AM / PM. Les cas de bord (comme 00:00) sont plus difficiles à afficher autrement. Voici comment je vous suggère de le faire.

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

Vérifiez SimpleDateFormat docs pour plus d'informations.