Добавьте минуты в формат времени в Котлин - PullRequest
0 голосов
/ 24 января 2019

Я создаю очень простое приложение в Android Studio, где я сообщаю текущее время (ЧЧ: ММ), расстояние в метрах и скорость в метрах в минуту, а затем мне нужно рассчитать время (расстояние / скорость)и результат, в минутах, добавьте в переменную времени.Например:

time = "01:45:15" // hour, minute, seconds, user input
distance = 45 // meters, user input
velocity = 30 // meters per minute, user input

newTime = "01:46:45" // Because it took a minute and a half (45/30)

Я посмотрел онлайн и нашел несколько решений, и мой текущий код (я ОЧЕНЬ новичок в Kotlin):

var distance = edTrecho.text.toString()
var velocity = edVelocidade.text.toString()
var minutes = distance.toLong() / velocity.toLong()
var df = SimpleDateFormat("HH:mm", Locale.getDefault()).parse(edTime.text.toString())
var calendar = GregorianCalendar()

calendar.time = df
calendar.add(GregorianCalendar.MINUTE, minutes)
var newTime = calendar.time

Но метод addможно добавлять только целые значения, мне нужно добавить десятичное значение для минут (например, 1,5 минуты должны добавить минуту и ​​30 секунд)

Каков наилучший способ достижения этого результата?

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Вы можете преобразовать минуты в секунды и добавить их, а затем снова преобразовать их обратно в минуты, чтобы получить желаемый результат.

var seconds = minutes * 60;
calendar.add(GregorianCalendar.SECOND, seconds);
var total_minutes = calendar.time/60;

0 голосов
/ 24 января 2019

Лучше использовать секунды в своих вычислениях, например:

var seconds = (distance.toDouble() / (velocity.toDouble() / 60)).roundToInt()

, вы должны преобразовать в Double, чтобы избежать целочисленного деления и, наконец, округлить до целого числа с roundToInt().velocity.toDouble() / 60 - это скорость, преобразованная в м / с .

и сложение их:

calendar.add(GregorianCalendar.SECOND, seconds)
0 голосов
/ 24 января 2019

Если вам нужно добавить нецелые значения для минут - просто преобразуйте их в секунды и добавьте секунды. Или миллисекунды, если вам нужно быть более точным. Это лучший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...