Problème de formatage de date

- - Dernière réponse : KX
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 octobre 2019
- 31 oct. 2017 à 23:33
Bonjour à tous,

J'ai besoin de lire une date dans un fichier excel (j'utilise apache POI) mais j'ai un soucis dans le formatage de ma date. J'ouvre mon fichier je lis la date sans aucun problème, ensuite je la formate avec SimpleDateFormat, j'obtiens un string en sortie et lorsque que je retransforme le string en date via la methode parse (String), je perd mon formatage. Avez vous des idées ?

Merci d'avance

CF le code suivant :
Workbook wb = null;
try {
wb = WorkbookFactory.create (new BufferedInputStream(
new DataInputStream(
new FileInputStream(
new File("Fichier.xls")))));

} catch (EncryptedDocumentException | InvalidFormatException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


//date écrite dans le fichier excel= 07/10/2015 14:38:00
Date date = wb.getSheetAt(0).getRow(1).getCell(0).getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat ("MM/dd/yyyy hh:mm:ss");
String date2 = sdf.format(date);
Date date3 = null;
try {
date3 = sdf.parse(date2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("date lue = " date + ", date formaté = " + date2 + ", date retransformé en date = " + date3);
//sortie :date lue = Wed Oct 07 14:38:00 CEST 2015, date formaté = 10/07/2015 02:38:00, date retransformé en date = = Wed Oct 07 02:38:00 CEST 2015
}
Afficher la suite 

1 réponse

Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 octobre 2019
88
0
Merci
Bonjour,

h
c'est pour les heures anglaises 1-12 am/pm, mais si tu as des heures de 0 à 23, tu dois utiliser
H
, c'est pour ça que 14:38 devient 02:38.

Remarque : le plus propre serait de te faire deux méthodes utilitaires de conversions Date/String et String/Date plutôt que de mélanger cette logique au reste de ton code...

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

public static String convert(Date date) {
    return dateFormat.format(date);
}

public static Date convert(String date) {
    try {
        return dateFormat.parse(date);
    } catch (ParseException e) {
        throw new RuntimeException("Unparseable date: " + date, e);
    }
}

public static void main(String[] args) {
    Date date = new Date();
    String date2 = convert(date);
    Date date3 = convert(date2);
    System.out.println("date lue = " + date + ", date formaté = " + date2 + ", date retransformé en date = " + date3);
}
Commenter la réponse de KX