Разница в анализе даты Android от модульного тестаAndroid

Форум для тех, кто программирует под Android
Anonymous
Разница в анализе даты Android от модульного теста

Сообщение Anonymous »

У меня возникла проблема: дата, анализируемая в модульном тесте, отличается от даты, запущенной на реальном устройстве.
Пришло время проанализировать и найти разницу.

Код: Выделить всё

val startStr = "2024-06-16T15:35:08.363341+0000"
val endStr = "2024-06-16T15:50:08.340638+0000"
Код, который я запускаю:

Код: Выделить всё

fun diff() :String {
val startStr = "2024-06-16T15:35:08.363341+0000"
val endStr = "2024-06-16T15:50:08.340638+0000"
val differenceInTimeFormat = getDifferenceInTimeFormat(date(startStr), date(endStr))
return differenceInTimeFormat
}

private fun date(startStr: String): Date = try {
val dateFormat3 = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ", Locale.US)
dateFormat3.parse(startStr)!!
} catch (e: ParseException) {
throw Exception()
}

private fun getDifferenceInTimeFormat(startDate: Date, endDate: Date): String {
val diffInMilli = endDate.time - startDate.time
val hours = TimeUnit.MILLISECONDS.toHours(diffInMilli)
val minutes = TimeUnit.MILLISECONDS.toMinutes(diffInMilli) % 60
val seconds = TimeUnit.MILLISECONDS.toSeconds(diffInMilli) % 60
return String.format(Settings.localeDefault, "%02d:%02d:%02d", hours, minutes, seconds)
}

На устройстве возвращается

Код: Выделить всё

00:14:59
и результаты модульного теста

Ожидается: 00:14:37 Факт: 00:14 :59

Код: Выделить всё

@Test
fun addition_isCorrect() {
assertEquals(diff(), "00:14:49")
}
Та же проблема возникает и при использовании этого параметра в качестве форматирования.

Код: Выделить всё

"yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
Как решить проблему анализа разницы во времени между модульным тестом и реальным устройством?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -unit-test

Вернуться в «Android»