При использовании версии Java до 8... можно использовать Время Joda и PeriodFormatter
. Если Вы действительно получили продолжительность (т.е. прошедшее количество времени, без ссылки на систему календаря) затем необходимо, вероятно, использовать Duration
по большей части - можно затем звонить toPeriod
(указывающий любой PeriodType
, Вы хотите отразиться, становятся ли 25 часов 1 днем и 1 часом или нет, и т.д.) добираться Period
, который можно отформатировать.
, Если Вы используете Java 8 или позже: я обычно предлагал бы использовать java.time.Duration
для представления продолжительности. Можно затем звонить getSeconds()
и т.п. для получения целого числа для стандартного строкового форматирования согласно ответу bobince, если Вам нужно к - хотя необходимо остерегаться ситуации, где продолжительность отрицательна, как Вы, вероятно, хотите единственный знак минус в выходной строке. Так что-то как:
public static String formatDuration(Duration duration) {
long seconds = duration.getSeconds();
long absSeconds = Math.abs(seconds);
String positive = String.format(
"%d:%02d:%02d",
absSeconds / 3600,
(absSeconds % 3600) / 60,
absSeconds % 60);
return seconds < 0 ? "-" + positive : positive;
}
Форматирование этого пути обоснованно просто, если раздражающе ручной. Для [1 112] парсинг это становится более твердым вопросом в целом... Вы могли все еще использовать Время Joda даже с Java 8, если Вы хотите, конечно.
Если Вы не хотите притягивать библиотеки, достаточно просто сделать себя с помощью Средства форматирования, или связанного ярлыка, например, данного целого числа секунд s:
String.format("%d:%02d:%02d", s / 3600, (s % 3600) / 60, (s % 60));