Aquí hay un ejemplo que funciona con sus casos de prueba:
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 caso de prueba 20200913204839
devuelve:
Sun Sep 13 20:48:39 UTC 2020
Esto es lo que significan los caracteres en SimpleDateFormat:
yyyy
significa un año (Ejemplo:2020)
MM
significa un mes (Ejemplo:julio, agosto)
dd
significa un día en un mes (Ejemplo:15)
HH
significa una hora en un día (Ejemplo:20)
mm
y ss
significan minutos y segundos respectivamente (Ejemplo:52:34)
No tiene que ser una Fecha, solo una Cadena funciona bien.
Y sí, usar SimpleDateFormat funciona bien.
EDITAR:formato específico
Lo he formateado específicamente para su 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);
}
}
Primero analizamos la Cadena en una fecha, a partir de la cual podemos formatear.
Un caso de prueba 20200913204839
devuelve:
13-Sun-2020 08:48:39