Разница между двумя временами в Android Studio (зарегистрированное время и текущее время)

У меня есть простой код, я записываю время, когда пользователь нажимает кнопку, и вычитаю это время из текущего времени. Это должно дать мне разницу.

Самое смешное, что если я печатаю свои переменные, они верны, но когда я делаю вычитание, результатом будет 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

Может кто-нибудь помочь мне, пожалуйста?

0
0
1 326
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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)
}

Другие вопросы по теме