Oto przykład, który działa z Twoimi przypadkami testowymi:
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);
}
}
Z przypadkiem testowym 20200913204839
zwraca:
Sun Sep 13 20:48:39 UTC 2020
Oto, co oznaczają znaki w SimpleDateFormat:
yyyy
oznacza rok (przykład:2020)
MM
oznacza miesiąc (przykład:lipiec, sierpień)
dd
oznacza dzień w miesiącu (przykład:15)
HH
oznacza godzinę dziennie (przykład:20)
mm
i ss
oznaczają odpowiednio minuty i sekundy (przykład:52:34)
Nie musi to być data — wystarczy ciąg znaków.
I tak - używanie SimpleDateFormat działa dobrze.
EDYCJA:Specyficzne formatowanie
Sformatowałem go specjalnie dla Twojego przypadku:
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);
}
}
Najpierw analizujemy String na datę, z której możemy sformatować.
Przypadek testowy 20200913204839
zwraca:
13-Sun-2020 08:48:39