アプリでTimePickerを使用しています。ユーザーがTimePickerで画面を開くたびに、現在の時刻で画面を初期化します。これを行うと、TimePickerはPMではなくAMを表示します。なぜこれが起こるのですか?コードに追加する必要があるものはありますか?
Date initDate = m_NoteManageObject.getDateTimeArray(position);
Calendar myCal = Calendar.getInstance();
myCal.setTime(initDate);
TimePicker timePicker = (TimePicker)layout.findViewById(R.id.time_picker);
// Initialise Time Picker
timePicker.setCurrentHour(myCal.get(Calendar.HOUR));
timePicker.setCurrentMinute(myCal.get(Calendar.MINUTE));
_Calendar.HOUR_OF_DAY
_の代わりに_Calendar.HOUR
_を使用する必要があります。
つまり、timePicker.setCurrentHour()
は常に24時間形式の引数を期待します。残念ながら、この事実はAPIドキュメントに適切に文書化されていません。
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute) {
if(hourOfDay>=0 && hourOfDay<12){
time = hourOfDay + " : " + minute + " AM";
} else {
if(hourOfDay == 12){
time = hourOfDay + " : " + minute + "PM";
} else{
hourOfDay = hourOfDay -12;
time = hourOfDay + " : " + minute + "PM";
}
}
deliveryTime.setText(time);
}
TimepickerのonTimeSet()メソッドをオーバーライドする必要があると思います。このリンクを確認してください
それがあなたを助けますように。
これを試して :
Calendar calendar = Calendar.getInstance();
calendar.set(0, 0, 0, hourOfDay, minute, 0);
long timeInMillis = calendar.getTimeInMillis();
Java.text.DateFormat dateFormatter = new SimpleDateFormat("hh:mm a");
Date date = new Date();
date.setTime(timeInMillis);
time.setText(dateFormatter.format(date));
まず、Calendar
クラスのインスタンスを取得し、次にHOUR_OF_DAY
を使用して時間を取得します。 HOUR_OF_DAY
は24時間形式になるため、それを変数に割り当ててから、そのintが0
より大きく12
より小さいかどうかを確認します。この条件が真の場合は、AM
またはPM
を追加します。 HOUR_OF_DAY
は24時間形式であるため、PM時間は13,14
として表示されます。これを処理するには、HOUR_OF_DAY
から12
を引くだけです。コードは次のとおりです。
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 12 && hour >= 0) {
tv.setText(hour + " AM");
} else {
hour -= 12;
if(hour == 0) {
hour = 12;
}
tv.setText(hour + " PM");
}