我正在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秒)
达到此结果的最佳方法是什么?
答案 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)