Я бы рекомендовал использовать SimpleDateFormat в сочетании с классом Date для форматирования времени:
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("K:mm a");
String formattedTime = sdf.format(now);
Краткое объяснение, как это работает:
Вы создаете объект SimpleDateFormat и передаете String его создателю, который сообщает ему, как форматировать каждый объект время / дата, который передается в функцию format ().
Существует множество констант / букв, которые представляют особый объект времени (например, секунды, маркер AM / PM, см. Полный список * в документации класса ).
«K: mm a» означает формат «11:42 AM» - одну или две цифры для часа (в зависимости от его значения) в 12-часовом формате, всегда две цифры для минут (мм) и либо AM, либо PM (a), в зависимости от времени.
После того, как вы это сделали, просто передайте объект Date в функцию format (), и вы получите отформатированную строку. Обратите внимание, что Date содержит только один момент времени, если вы создаете его из конструктора без аргументов ("= new Date ()"), он использует текущее время. Если вам нужно другое время, вы можете передать длинный аргумент с помощью millis, вы можете получить его из Calendar.getTimeInMillis ().
Что касается реализации «обновленной функции XY минут назад» - да, вам придется обновлять ее каждую минуту, и вам нужно вычислить разницу между обновлением и текущим временем. Я бы сказал, что это не стоит с точки зрения батареи и дополнительной работы.
Если ваше приложение использует стандартные короткие циклы обновления (например, каждый час или что-то в том же духе) и не является полноэкранным, у пользователя есть видимые часы сверху / снизу его экрана. Если он действительно хочет проверить, сколько времени прошло с момента обновления, он может немного взглянуть и сравнить (в основном, минуты или часы / минуты). И IMHO, это не неудобство для пользователя, по крайней мере, не для меня. Я бы просто сравнил, не думая об этом. Но я склонен убивать приложения, которые бесполезно расходуют заряд батареи.
Также обратите внимание, что не все используют 12-часовой формат. Чтобы получить локализованный формат времени в зависимости от настроек пользователя / страны, используйте DateFormat.getTimeInstance (). Это возвращает DateFormat, но это работает как SimpleDateFormat, просто передайте время format ().