Voici un exemple qui fonctionne avec vos scénarios de 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);
}
}
Avec cas de test 20200913204839
il renvoie :
Sun Sep 13 20:48:39 UTC 2020
Voici ce que signifient les caractères dans SimpleDateFormat :
yyyy
signifie une année (Exemple :2020)
MM
signifie un mois (Exemple :juillet, août)
dd
signifie un jour dans un mois (Exemple :15)
HH
signifie une heure dans une journée (Exemple :20)
mm
et ss
signifient respectivement les minutes et les secondes (Exemple :52:34)
Il n'est pas nécessaire que ce soit une date - juste une chaîne fonctionne bien.
Et oui - l'utilisation de SimpleDateFormat fonctionne très bien.
EDIT :Mise en forme spécifique
Je l'ai formaté spécifiquement pour votre cas :
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);
}
}
Nous analysons d'abord la chaîne en une date, à partir de laquelle nous pouvons formater.
Un cas de test 20200913204839
renvoie :
13-Sun-2020 08:48:39