在Kotlin中将分钟添加到时间格式

时间:2019-01-24 14:42:56

标签: android-studio kotlin

我正在Android Studio中构建一个非常简单的应用程序,我在其中告知当前时间(HH:MM),以米为单位的距离和以米/分钟为单位的速度,然后我需要计算时间(距离/速度)结果以分钟为单位,添加时间变量。例如:

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 :(得分:1)

如果您需要为分钟添加非整数值-只需将它们转换为秒并添加秒即可。如果需要更精确,则为毫秒。这是最好的方法。

答案 1 :(得分:1)

您可以将分钟转换为秒并添加它们,然后再次将其转换回分钟以得到所需的结果。

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

答案 2 :(得分:1)

最好在计算中使用秒,例如:

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

您必须转换为Double以避免整数除法,最后用roundToInt()舍入为整数。
velocity.toDouble() / 60是将速度转换为 m / sec

并添加它们:

calendar.add(GregorianCalendar.SECOND, seconds)