отображение текущего времени в TimePicker в Android

я использую этот код, чтобы показать текущее время в TimePicker, но я действительно не знаю, почему он не показывает правильно!? например, сейчас время (системное время) 14:56, но оно показывает 2:56 AM!. как я могу это решить? благодаря.

 private long timer1 = 0; 
 ...

switch (view.getId()) {
        case R.id.add1: {
            if (timer1 == 0) {
                timer1 = getCurrentTime();
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(timer1);

            TimePicker timePicker = (TimePicker) findViewById(R.id.tp_1);
            timePicker.setCurrentHour(calendar.get(Calendar.HOUR));
            timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));



            break;
         . ..              
        }

private long getCurrentTime() {
    Calendar calendar = GregorianCalendar.getInstance();
    return calendar.getTimeInMillis();
}

а также у меня такая же проблема, когда я хочу преобразовать это время в форму String с помощью этого метода ниже:

private String convertTimeToString(long time) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(time);

    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    //int hour = get;
    int minute = calendar.get(Calendar.MINUTE);

    String timeSet;
    if (hour > 12) {
        hour -= 12;
        timeSet = "PM";
    } else if (hour == 0) {
        hour += 12;
        timeSet = "AM";
    } else if (hour == 12) {
        timeSet = "PM";
    } else {
        timeSet = "AM";
    }

    String minutes;
    if (minute < 10) {
        minutes = "0" + minute;
    } else {
        minutes = String.valueOf(minute);
    }
    // Append in a StringBuilder
    return String.format("%s:%s %s", hour, minutes, timeSet);

}

пожалуйста, помогите мне!


person Mina Dahesh    schedule 10.11.2014    source источник
comment
проверьте мой ответ, вы должны использовать час = c.get(Calendar.HOUR_OF_DAY);   -  person DevOps85    schedule 10.11.2014
comment
Установите HOUR_OF_DAY вместо HOUR в поле часа.   -  person Pankaj Kumar    schedule 10.11.2014


Ответы (3)


Обновлено
1) проблема с неправильным временем: попробуйте отредактировать код следующим образом:

...
timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
...

2) проблема строкового представления: общий подход к преобразованию даты/времени в строку следующий:

String format = "hh:mm"; // or any other format - see note below
SimpleDateFormat formatter = new SimpleDateFormat(format);
formatter.format(yourDate);

или когда вы используете временную метку long, последняя строка будет:

formatter.format(new Date(yourLongTimestamp));

Полезные ссылки:
Различные символы формата даты/времени, которые вы можете посмотреть здесь.
Протестировать различные шаблоны формата можно здесь .

person sberezin    schedule 10.11.2014
comment
спасибо, но есть еще одна проблема, когда я хочу преобразовать время в строковую форму. я объясню это сейчас время - person Mina Dahesh; 11.11.2014
comment
Нисколько. когда вы получаете полезный ответ, хорошо его принять (галочка в верхнем левом углу) - person sberezin; 12.11.2014
comment
извините, я поставил галочку, но я не знаю, что изменится, я не понимаю, что вы имеете в виду, но я не понимаю, как только напишу спасибо, похвалите. - person Mina Dahesh; 12.11.2014
comment
теперь время, я отмечаю все посты с ответами, но они не отмечены! (после прокрутки страницы) - person Mina Dahesh; 12.11.2014

Замените эту строку:

timePicker.setCurrentHour(calendar.get(Calendar.HOUR));

To:

hourStart = c.get(Calendar.HOUR_OF_DAY);
person Pratik Dasa    schedule 10.11.2014
comment
спасибо, но есть еще одна проблема, когда я хочу преобразовать время в строковую форму. Я объясняю это сейчас время. - person Mina Dahesh; 11.11.2014
comment
@ user3671748, пожалуйста, примите ответ и поддержите его. Так что другие могут воспользоваться этим. - person Pratik Dasa; 12.11.2014

person    schedule
comment
спасибо, но вывод этого метода должен быть String, потому что он мне нужен в других частях этого проекта. пожалуйста, помогите мне, как я могу это сделать сейчас? - person Mina Dahesh; 11.11.2014
comment
попробуйте увидеть последний ответ в этом сообщении: stackoverflow.com/questions/3992820/ - person DevOps85; 11.11.2014
comment
при этом: вернуть String.format(%s:%s %s, Integer.toString(час), минуты, timeSet); - person DevOps85; 11.11.2014