У меня есть простой код, я записываю время, когда пользователь нажимает кнопку, и вычитаю это время из текущего времени. Это должно дать мне разницу.
Самое смешное, что если я печатаю свои переменные, они верны, но когда я делаю вычитание, результатом будет 1969 год, время, которое система использует в качестве эталона.
Это мой код:
// I register this time to later compare to the current time.
startTime = System.currentTimeMillis().toDouble()
timer = Timer()
timer.schedule(timerTask {
runOnUiThread {
advanceTimer()
}
}, 0, 60)
fun advanceTimer() {
//Total time since timer started, in seconds
val currentTime = System.currentTimeMillis().toDouble()
time = currentTime-startTime
}
Вот что выводит консоль:
D/startTime: 2020:12:20:21:27:39:78
D/currentTime: 2020:12:20:21:29:49:21
Д/время: 1969:12:31:18:02:09:42
Может кто-нибудь помочь мне, пожалуйста?
String time1 = "16:00:00";
String time2 = "19:00:00";
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date date1 = format.parse(time1);
Date date2 = format.parse(time2);
long difference = date2.getTime() - date1.getTime();
Вот как вы вычисляете разницу во времени в Java.
Вычитание вашего расчета даты - это разница между двумя датами
Если вы установите дату SimpleDateFormat, просто покажите разницу,
Вы можете увидеть этот ответ https://stackoverflow.com/a/21285226/5523669
Этот ответ привел меня в правильном направлении, на самом деле мой подход был хорош, мне просто нужно было сделать функцию, которая показывала бы только разницу.
Я сделал это. Надеюсь, это поможет кому-то.
Просто вызовите функцию с результатом вашей операции, в конце я использовал Date().getTime() вместо System.currentTimeMillis(), но я думаю, что это должно быть то же самое.
Полный код:
startTime = System.currentTimeMillis().toDouble()
timer = Timer()
timer.schedule(timerTask {
runOnUiThread {
advanceTimer()
}
}, 0, 60)
fun advanceTimer() {
//Total time since timer started, in seconds
val currentTime = System.currentTimeMillis().toDouble()
time = currentTime-startTime
// Shows the time in a label on the screen
timerString.text = differenceResult(time)
}
fun differenceResult(time: Long): String {
var x: Long = time / 1000
var seconds = x % 60
x /= 60
var minutes = x % 60
x /= 60
var hours = (x % 24).toInt()
x /= 24
var days = x
return String.format("%02d:%02d:%02d", hours, minutes, seconds)
}