Во-первых, это действительно плохой код на мой взгляд.
Это преобразование исходной ms
значения в строку (так 35968 станет «35968»), а затем разбор, что в Date
, как будто из формата, который только определяет количество миллисекунд ... который затем интерпретируется как «число миллисекунд с эпохи Unix в часовом поясе форматирования».
Затем оно преобразует значение Date
в формате минут/секунд/миллисекунд, форматируя его другим SimpleDateFormat
. Миллисекунды форматируются только до двух знаков после запятой, хотя в качестве разделителя здесь используется не :
, а не .
. (Это делает его похожим на часы/минуты/секунды, а не минуты/секунды/миллисекунды).
Оба формата используют тот же часовой пояс, который, по меньшей мере, , тип позволяет избежать проблем. Однако:
- Если часовой пояс системы по умолчанию были переходы вокруг эпохи Unix, там еще может быть некоторые странности
- Фундаментально это пытается форматировать длительность путем его обработки в качестве даты и времени. Это плохая идея
- Исключение «обработка» смехотворно - если исключение при разборе, то первое исключение будет печататься и
NullPointerException
будет выброшен на следующую строке, как date
еще будет нулевым
- Если продолжительность составляет более часа, информация будет тихо потеряна; это не ясно, что желаемое поведение здесь
- Даже если вы сделал хотите отформатировать его таким образом, было бы проще использовать
new Date(ms)
, а затем отформатировать его с SimpleDateFormat
с часовым поясом, установленным в UTC. Там нет необходимости для любой строки разбора здесь
Я не могу легко обеспечить лучший код, не зная еще несколько требований, но если вы пытаетесь заменить этот код вы должны рассмотреть следующие вопросы:
- Учитывая, что у вас миллисекунды, вы определенно хотите только на десятки миллисекунд на дисплее?
- Что вы хотите, если
ms
отрицательный?
- Что вы хотите, если
ms
представляет собой больше часа?
- Вы определенно хотите
:
как разделитель между секундами и миллисекундами?
Возможно, вы захотите использовать String.format
для форматирования значения.К сожалению, ни Joda Time, ни java.time
в Java 8 не имеют хорошего способа выполнения форматирования Duration
, что вам действительно нужно.
Попросите вашего учителя еще прочитать основы java – soorapadman
Теперь самое подходящее время для вас, чтобы взять некоторые базовые учебники по java –
Это не то место, где люди решают ваши домашние задания. – Alboz