es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir la fecha de API a string en Kotlin dentro de mi adaptador de recyclerview?

Necesito convertir la fecha de API desde este formato (yyyy-MM-dd HH:mm:ss) a (oct 18) así como se muestra aquí.

 @Throws(ParseException::class)
    private fun getFormate(date: String): String? {
        val d: Date = SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH).parse(date)
        //Log.d("Date", String.valueOf(d));
        val cal = Calendar.getInstance()
        cal.time = d
        return SimpleDateFormat("MMM dd").format(cal.time)
    }

dentro de onBindViewHolder

val thisModelResponse: ExpiryData = expiryList.get(position)
        holder.expiryDate1.text = getFormate(thisModelResponse.getCreatedDate())
        holder.expiryDate1.text = (expiryItem.expiryDate)

Sin embargo, estoy obteniendo un error de referencia no resuelta en getCreatedDate().

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para resolver el error de referencia no resuelta en getCreatedDate(), asegúrese de que la clase de modelo ExpiryData tenga un método getter para la propiedad createdDate. Puede verificar la clase del modelo para confirmar esto.

    Suponiendo que el método getter existe, puede modificar el método onBindViewHolder() de la siguiente manera para convertir el formato de fecha de la API al formato (oct 18):

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val thisModelResponse: ExpiryData = expiryList[position]
        val createdDate = thisModelResponse.getCreatedDate()
    
        // convertir el formato de fecha
        val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
        val date = dateFormat.parse(createdDate)
        val calendar = Calendar.getInstance().apply {
            time = date
        }
        val monthDayFormat = SimpleDateFormat("MMM d", Locale.ENGLISH)
        val formattedDate = monthDayFormat.format(date)
    
        holder.expiryDate1.text = formattedDate
        // establecer otras vistas ...
    }
    

    En este código, primero recuperamos la propiedad createdDate del modelo ExpiryData usando el método getCreatedDate(). Luego creamos un objeto SimpleDateFormat para analizar la fecha en el formato de la API. Luego analizamos la fecha y la configuramos en una instancia de Calendar, que usaremos para formatear la fecha en el nuevo formato.

    A continuación, creamos otro objeto SimpleDateFormat para formatear la fecha en el nuevo formato (oct 18). Aplicamos este formato a la hora del calendario y obtenemos la fecha formateada.

    Finalmente, establecemos la fecha formateada en el TextView expiryDate1 en el ViewHolder, junto con cualquier otra vista que pueda tener.

    Tenga en cuenta que usé una “d” minúscula en la cadena de formato de mes y día para obtener una fecha sin ceros iniciales (por ejemplo, “oct 2” en lugar de “oct 02”). Puede modificar esto a su gusto.

Comments are closed.