Ecco un esempio che funziona con i tuoi casi di test:
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);
}
}
Con test case 20200913204839
restituisce:
Sun Sep 13 20:48:39 UTC 2020
Ecco cosa significano i caratteri in SimpleDateFormat:
yyyy
indica un anno (Esempio:2020)
MM
indica un mese (Esempio:luglio, agosto)
dd
indica un giorno in un mese (Esempio:15)
HH
indica un'ora in un giorno (Esempio:20)
mm
e ss
indicano rispettivamente minuti e secondi (Esempio:52:34)
Non deve essere una data, solo una stringa funziona bene.
E sì, l'utilizzo di SimpleDateFormat funziona perfettamente.
EDIT:formattazione specifica
L'ho formattato appositamente per il tuo 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);
}
}
Per prima cosa analizziamo la stringa in una data, dalla quale possiamo formattare.
Un test case 20200913204839
resi:
13-Sun-2020 08:48:39