Я полагаю, вы хотите изменить текст своего TextView
через определенное время, но кажется, что вы не знаете дату при сравнении, и у вас есть пара ошибок в вашем коде.
Во-первых, эта строка кода:
DateFormat.getTimeInstance(DateFormat.SHORT, Locale.JAPAN).parse("2:00pm")
вернет экземпляр Date
с этой датой и временем в вашем часовом поясе 01-01-1970 02:00:00
. Однако вам нужно получить экземпляр Date
с сегодняшней датой и временем 14:00:00
.
Во-вторых, эта строка кода:
Calendar.getInstance(Locale.JAPAN).after(df)
это неправильное использование Calendar::after()
, и это потому, что вы можете передать в функцию только объект Calendar
, чтобы получить правильный результат сравнения, иначе она всегда будет возвращать false.
В вашем случае вы ' повторная передача объекта Date
.
Ниже приведена реализация функции Calendar::after()
.
public boolean after(Object when) {
return when instanceof Calendar
&& compareTo((Calendar)when) > 0;
}
Если вы хотите правильно сравнить текущее время с 14:00
( сравнивается только время сегодня ), вот модификация вашего кода:
val calendarToCompare = Calendar.getInstance(Locale.JAPAN).apply {
set(Calendar.HOUR_OF_DAY, 14)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}
val systemDat = Calendar.getInstance().after(calendarToCompare)
if (systemDat) {
textview.text = "successful"
} else {
textview.text = "failure"
}
Если вы хотите выполнить обновление представления с учетом жизненного цикла (например, для установки текста вашего текстового представления), вы можете проверить это gist .