web-dev-qa-db-ja.com

TimePickerでAM / PMを設定するにはどうすればよいですか?

アプリで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));
23
AndroidDev

_Calendar.HOUR_OF_DAY_の代わりに_Calendar.HOUR_を使用する必要があります。

つまり、timePicker.setCurrentHour()は常に24時間形式の引数を期待します。残念ながら、この事実はAPIドキュメントに適切に文書化されていません。

45
Dheeraj V.S.
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);
}
2
Rishi

TimepickerのonTimeSet()メソッドをオーバーライドする必要があると思います。このリンクを確認してください

TimePickerDialogおよびAMまたはPM

それがあなたを助けますように。

1

これを試して :

            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));
0
Lay Leangsros

まず、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");
}
0
rakshi059