Aqui está um exemplo que funciona com seus casos de teste:
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateExample1 {
public static void main(String[] args)throws Exception {
String sDate1="20200913204839";
Date date1=new SimpleDateFormat("yyyyMMddhhmmss").parse(sDate1);
System.out.println(date1);
}
}
Com caso de teste
20200913204839
ele retorna:Sun Sep 13 20:48:39 UTC 2020
Aqui está o que os caracteres no SimpleDateFormat significam:
yyyy
significa um ano (Exemplo:2020) MM
significa um mês (Exemplo:julho, agosto) dd
significa um dia em um mês (Exemplo:15) HH
significa uma hora em um dia (Exemplo:20) mm
e ss
significam minutos e segundos respectivamente (Exemplo:52:34) Não precisa ser uma Data - apenas uma String funciona bem.
E sim - usar SimpleDateFormat funciona muito bem.
EDIT:formatação específica
Eu formatei especificamente para o seu caso:
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateExample1 {
public static void main(String[] args)throws Exception {
String sDate1="20200913204839";
Date date1=new SimpleDateFormat("yyyyMMddhhmmss").parse(sDate1);
String formatted = new SimpleDateFormat("dd-EE-yyyy hh:mm:ss").format(date1);
System.out.println(formatted);
}
}
Primeiro analisamos a String em uma data, a partir da qual podemos formatar.
Um caso de teste
20200913204839
retorna:13-Sun-2020 08:48:39