首页 > 解决方案 > 如果 API 中的日期大于、小于或等于 Kotlin 中的当前日期,如何将当前日期与 API 中的日期进行比较以显示不同的 ImageView

问题描述

我根据用户发布到 API 的内容从 API 获取日期

如果来自 API 的日期大于、小于或等于当前日期,我在这里尝试做的是显示不同的 ImageView

我有这个绑定功能:

fun bind(event: PlannerGet) {
        val stringzz = event.date
        val date = LocalDate.parse(stringzz, DateTimeFormatter.ISO_DATE)
        val dateFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu")
        val sdf = SimpleDateFormat("dd-MMM-yyyy")
        val c = Calendar.getInstance()
        try {
            c.time = sdf.parse(currentDate("dd-MMM-yyyy"))
        } catch (e: ParseException) {
            e.printStackTrace()
        }
        val _date: String = sdf.format(c.time)
        val gregorianDate: LocalDate = LocalDate.parse(_date, dateFormatter)
        val islamicDate: HijrahDate = HijrahDate.from(date)


        mTextHijri.text = islamicDate.format(dateFormatter).toString()
        mTextNote.text = "${event.note}"
        mTextTitle.text = "${event.title} at ${event.location}"
        mTextIndex.text = "${getTime(event.startTime!!)} - ${getTime(event.endTime!!)}"
        mTextDate.text = (date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)))
        mTextTimeEstimated.text = getEstimated(getTime(event.startTime), getTime(event.endTime))

        
    }

它工作正常,我尝试将 if 条件添加到函数中,如下所示:

if(mTextDate.toString() < _date){
            mTick.setImageResource(R.drawable.tick)
        }
        else if (mTextDate.toString() > _date){
            mTick.setImageResource(R.drawable.ic_logopng)
        }
        else if (mTextDate.toString() == _date){
            mTick.setImageResource(R.drawable.blue_logo)
        }

我已经在 API 中发布了 3 个不同的日期进行比较,但我每次都得到相同的 ImageView,我在这里做错了什么?

我还尝试直接从数据类(下面的数据类)进行比较:

data class PlannerGet(
val date: String,
val endTime: String,
val id: Int,
val location: String,
val note: String,
val startTime: String,
val title: String
)

但我每次都得到相同的 ImageView

有什么建议可以完成这项工作吗?

更新:

我尝试将日志用作评论中提到的“Akhil”,

所以我想像这样比较两个时间戳:

var currentDateTime=LocalDateTime.now()
        var time= currentDateTime.format(DateTimeFormatter.ofPattern("HH:mm"))
        Log.d("Time", time)
if(event.startTime > time){

            mTextTimeEstimated.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.tick_ongoing_very_small, 0);
        }
        else if (event.startTime < time){
            mTextTimeEstimated.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.tick_upcoming_very_small, 0);
        }
        else if (event.startTime < time) {
            mTextTimeEstimated.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.tick_completed_very_small, 0);
        }

日志如下:

D/Time: 17:23
D/event time: 18:19
D/Time: 17:23
D/event time: 08:36
D/Time: 17:23
D/event time: 05:37
D/Time: 17:23
D/event time: 04:38

但仍然得到一个值,即:

event.startTime > time

标签: javaandroiddatekotlinif-statement

解决方案


推荐阅读