62 votes

Convertir une chaîne en date en java

J'essaie d'analyser une chaîne de caractères dans un champ de date dans une application Android, mais je n'arrive pas à le faire correctement. Voici la chaîne que j'essaie de convertir en date "03/26/2012 11:49:00 AM". La fonction que j'utilise est la suivante

private Date ConvertToDate(String dateString){
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
    Date convertedDate = new Date();
    try {
        convertedDate = dateFormat.parse(dateString);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return convertedDate;
}

Mais je continue à avoir 3/1/112 11:49AM comme résultat.

2 votes

Où voyez-vous "3/1/112 11:49AM" ? La valeur retournée est une date, pas une chaîne de caractères, donc vous devez faire quelque chose pour le voir comme un résultat de chaîne...

0 votes

Je vois Mon Mar 26 11:49:00 IST 2012 comme sortie.

0 votes

Essayez de définir l'analyse syntaxique en utilisant dateFormat.setLenient(true), puis vérifiez les résultats de votre analyse syntaxique.

119voto

Boris Strandjev Points 18480

Vous avez tort dans la façon dont vous affichez les données, je suppose, parce que pour moi :

    String dateString = "03/26/2012 11:49:00 AM";
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
    Date convertedDate = new Date();
    try {
        convertedDate = dateFormat.parse(dateString);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(convertedDate);

Imprimés :

Mon Mar 26 11:49:00 EEST 2012

0 votes

Tout le monde avait raison. La conversion était correcte mais j'utilisais les fonctions Date.getYear(), getMonth() et toutes celles que j'utilisais incorrectement. Merci pour toute votre aide.

19voto

mDonmez Points 273

Tout s'est bien passé quand j'ai utilisé Locale.US paramétrer dans SimpleDateFormat

String dateString = "15 May 2013 17:38:34 +0300";
System.out.println(dateString);

SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy HH:mm:ss Z", Locale.US);
DateFormat targetFormat = new SimpleDateFormat("dd MMM yyyy HH:mm", Locale.getDefault());
String formattedDate = null;
Date convertedDate = new Date();
try {
     convertedDate = dateFormat.parse(dateString);
System.out.println(dateString);
formattedDate = targetFormat.format(convertedDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 System.out.println(convertedDate);

3voto

fish40 Points 1285
String str_date="13-09-2011";
DateFormat formatter ; 
Date date ; 
formatter = new SimpleDateFormat("dd-MM-yyyy");
date = (Date)formatter.parse(str_date); 
System.out.println("Today is " +date.getTime());

Essayez ceci

2voto

Jose Kurian Points 84

Ce code vous aidera à obtenir un résultat comme FEB 17 20:49 .

    String myTimestamp="2014/02/17 20:49";

    SimpleDateFormat form = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    Date date = null;
    Date time = null;
    try 
    {
        date = form.parse(myTimestamp);
        time = new Date(myTimestamp);
        SimpleDateFormat postFormater = new SimpleDateFormat("MMM dd");
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        String newDateStr = postFormater.format(date).toUpperCase();
        String newTimeStr = sdf.format(time);
        System.out.println("Date  : "+newDateStr);
        System.out.println("Time  : "+newTimeStr);
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }

Résultat :

Date : FEB 17

Heure : 20:49

1voto

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateInString = "07/06/2013";

try {

    Date date = formatter.parse(dateInString);
    System.out.println(date);
    System.out.println(formatter.format(date));

} catch (ParseException e) {
    e.printStackTrace();
}

Sortie :

2014/08/06 16:06:54
2014/08/06 16:06:54

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X