Problème de formatage de date

Deft - 31 oct. 2017 à 15:35 - Dernière réponse : KX 15367 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention
- 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

Répondre au sujet
KX 15367 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 31 oct. 2017 à 23:33
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.