Как установить AM / PM в TimePicker?

17

Я использую TimePicker в своем приложении. Всякий раз, когда пользователь открывает экран с помощью TimePicker, я инициализирую его текущим временем. Когда я это делаю, TimePicker показывает AM вместо PM. Почему это происходит? Есть ли что-нибудь, что я должен добавить в свой код?

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));
    
задан AndroidDev 08.07.2012 в 11:18
источник
  • У меня была та же проблема, и я понял это. Если вы используете Calendar.HOUR, это означает, что вы игнорируете значение AM / PM. Вместо этого, задавая текущий час, используйте Calendar.HOUR_OF_DAY для рассмотрения AM / PM. –  Bharat Dodeja 22.07.2013 в 18:31

5 ответов

39

Вам нужно будет использовать Calendar.HOUR_OF_DAY вместо Calendar.HOUR .

i.e., timePicker.setCurrentHour() всегда ожидает аргумент в 24-часовом формате. К сожалению, этот факт не задокументирован в документации API.

    
ответ дан Dheeraj V.S. 08.07.2012 в 12:38
источник
  • Это решило мою проблему. –  Bharat Dodeja 22.07.2013 в 18:33
  • Я установил время в textView и использовал тот же textView, чтобы выбрать время. Когда я устанавливаю время с помощью timePicker, он становится видимым для textView, но когда я снова выбираю textView, чтобы выбрать время, timePicker устанавливает AM / PM в AM. Пожалуйста, дайте решение. –  Apurva 19.01.2015 в 13:46
1

Я думаю, вам нужно переопределить метод onTimeSet () Timepicker. Проверьте эту ссылку

TimePickerDialog и AM или PM

Пусть это поможет вам.

    
ответ дан Arindam Mukherjee 08.07.2012 в 11:23
источник
  • Я не использую TimePickerDialog, я просто использую виджет TimePicker i my layout. –  AndroidDev 08.07.2012 в 11:26
  • Но в настройках, это в формате 24 часа? Просто проверьте его и попробуйте использовать 12-часовой формат. –  Arindam Mukherjee 08.07.2012 в 11:28
  • Нет его в 12-часовом формате..активно в timepicker я хочу показать am или pm в зависимости от текущего времени –  AndroidDev 08.07.2012 в 11:29
  • mkyong.com/android/android-time-picker-example попробуйте с этим .. –  Arindam Mukherjee 08.07.2012 в 14:07
0

Попробуйте следующее:

            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));
    
ответ дан Lay Leangsros 01.09.2015 в 08:34
источник
0
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);
}
    
ответ дан Rishi Raj 28.06.2017 в 09:31
источник
  • Это очень полезно для timePicker в android. Попробуйте –  Rishi Raj 28.06.2017 в 09:32
0

Сначала получите экземпляр класса 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");
}
    
ответ дан rakshi059 01.09.2015 в 08:56
источник