Я пытался преобразовать значение секунд (в переменной BigDecimal) в строку в editText, например «1 час 22 минуты 33 секунды» или что-то в этом роде.
Я пробовал это:
String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");
(У меня есть roundThreeCalc - значение в секундах, поэтому я пытаюсь преобразовать его здесь.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Затем я установил для editText значение sequnceCaptureTime String. Но это не сработало. Это принудительно закрывает приложение каждый раз. Я совершенно не в своей тарелке, любая помощь приветствуется. Удачного кодирования!
Ответы:
Тебе должно быть больше везения с
Это приведет к падению десятичных значений после каждого деления.
Изменить: если это не сработало, попробуйте это. (Я только что написал и протестировал)
источник
DateUtils.formatElapsedTime
...Обязательно ли использовать BigDecimal? Если вам не нужно, я бы использовал int или long для секунд, и это немного упростило бы ситуацию:
Однако вы можете дополнить каждое из них, чтобы убедиться, что они представляют собой двухзначные значения (или что-то еще) в строке.
источник
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, форматирует прошедшее время в форме "MM:SS
" или "H:MM:SS
". Он возвращает строку, которую вы ищете. Вы можете найти документацию здесьисточник
Вот рабочий код:
источник
DateUtils.formatElapsedTime
...Что-то действительно полезное в Java 8
источник
Я предпочитаю встроенную в Java библиотеку TimeUnit
источник
источник
Это мое простое решение:
Test Results
:источник
Поэтому я предпочитаю упрощать:
Результат будет: 01 час 23 минуты 20 секунд.
источник
Если вы хотите единицы
h
,min
и вsec
течение времени , вы можете использовать это:Это много условных операторов. Метод вернет эти строки:
источник
Этот код работает нормально:
источник
Хороший и простой способ сделать это с помощью GregorianCalendar
Импортируйте их в проект:
А потом:
источник
Я использую это:
источник
Вот моя функция для решения проблемы:
источник
Я знаю, что это довольно давно, но в java 8:
источник
всего за минуты и секунды используйте это
источник
Я использую это в python для преобразования числа с плавающей запятой, представляющего секунды, в часы, минуты, секунды и микросекунды. Это достаточно элегантно и удобно для преобразования в тип datetime через strptime для преобразования. При необходимости его также можно легко продлить на более длительные интервалы (недели, месяцы и т. Д.).
источник
Я пробовал лучший способ и меньше кода, но может быть немного сложно понять, как я написал свой код, но если вы хорошо разбираетесь в математике, это так просто
часы занятий {
}
более точный!
источник
С Java 8 вы можете легко получить время в формате String из длинных секунд, например,
Здесь данное значение является максимально допустимым для преобразования (до 24 часов), и результат будет
Плюсы: 1) Нет необходимости конвертировать вручную и добавлять 0 для одной цифры
Минусы: работает только до 24 часов
источник
С помощью Java 8 вы можете легко достичь времени в формате LocalTime из длинных секунд, например,
Здесь данное значение является максимально допустимым для преобразования (до 24 часов), и результат будет
Плюсы: 1) Нет необходимости конвертировать вручную и добавлять 0 для одной цифры
Минусы: работает только до 24 часов
источник
Продолжительность с java.time
Вывод из этого фрагмента:
Если бы в
BigDecimal
коде была ненулевая доля секунды, этот код не работал бы в его нынешнем виде, но вы можете изменить его. Код работает на Java 9 и новее. В Java 8 преобразование изDuration
в часы, минуты и секунды немного более многословно, см. Ссылку внизу, чтобы узнать, как. Я предоставляю вам выбрать правильную форму единственного или множественного числа слов ( час или часы и т. Д.).Ссылки
Duration
в дни, часы, минуты и секунды в Java 8.источник