Converta a data da string como a data iso 20200917 em formato de data legível android [duplicado]

Sep 24 2020

Estou recebendo uma data neste formato de API: 20200917. Como posso converter isso em uma data?

Respostas

shahram_developer Sep 24 2020 at 15:32

EDITAR

Olá, você pode fazer assim:

String trDate="20200917";    
Date tradeDate = new SimpleDateFormat("yyyyMMdd", 
Locale.ENGLISH).parse(trDate);
String krwtrDate = new SimpleDateFormat("yyyy-MM-dd", 
Locale.ENGLISH).format(tradeDate);
1 deHaar Sep 24 2020 at 15:55

Suponho que você esteja recebendo uma Stringrepresentação de uma data (não a java.util.Date) que deseja converter para um formato diferente.

Uma forma seria a Stringmanipulação, que não deve ser a primeira escolha.

Outra forma seria usar as classes desatualizadas java.util.Datee java.text.SimpleDateFormatreformatar essa data String(isso já é mostrado em outra resposta). Mas esta não seria minha escolha devido ao uso de uma API antiga e problemática.

Veja como você pode fazer isso com java.time(desde o Java 8):

Java:

public static void main(String[] args) {
    // example input
    String input = "20200917";
    // parse the input String with a formatter that can handle the given format
    LocalDate localDate = LocalDate.parse(input, DateTimeFormatter.BASIC_ISO_DATE;
    /*
     * now that you have a LocalDate, you can use a custom or built-in formatter to
     * create a differently formatted String (built-in one used here)
     */
    String output = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
    // and then you can output the result
    System.out.println(String.format("%s ==> %s", input, output));
}

Kotlin:

fun main() {
    val input = "20200917"
    val localDate = LocalDate.parse(input, DateTimeFormatter.BASIC_ISO_DATE
    val output = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE)
    println("$input ==> $output")
}

A saída de cada um desses snippets

20200917 ==> 2020-09-17