web-dev-qa-db-fra.com

comment convertir Java chaîne en objet Date

J'ai une ficelle

String startDate = "06/27/2007";

maintenant, je dois obtenir l'objet Date. Mon DateObject doit avoir la même valeur que startDate.

Je fais comme ça

DateFormat df = new SimpleDateFormat("mm/dd/yyyy");
Date startDate = df.parse(startDate);

Mais la sortie est au format

27 janvier 00:06:00 PST 2007.

133
user755043

En gros, vous avez effectivement converti votre date au format chaîne en un objet de date. Si vous l'imprimez à ce moment-là, vous obtiendrez la sortie de formatage de date standard. Pour le formater ensuite, vous devez le reconvertir en un objet de date au format spécifié (déjà spécifié précédemment).

String startDateString = "06/27/2007";
DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
Date startDate;
try {
    startDate = df.parse(startDateString);
    String newDateString = df.format(startDate);
    System.out.println(newDateString);
} catch (ParseException e) {
    e.printStackTrace();
}
182
citizen conn

"mm" signifie le fragment "minutes" d'une date. Pour la partie "mois", utilisez "MM".

Alors, essayez de changer le code en:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
Date startDate = df.parse(startDateString);

Edit: un objet DateFormat contient une définition de formatage de date, pas un objet Date, qui contient uniquement la date sans souci de formatage. Quand on parle de formatage, on parle de créer une représentation sous forme de chaîne d’une date dans un format spécifique. Voir cet exemple:

    import Java.text.DateFormat;
    import Java.text.SimpleDateFormat;
    import Java.util.Date;

    public class DateTest {

        public static void main(String[] args) throws Exception {
            String startDateString = "06/27/2007";

            // This object can interpret strings representing dates in the format MM/dd/yyyy
            DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 

            // Convert from String to Date
            Date startDate = df.parse(startDateString);

            // Print the date, with the default formatting. 
            // Here, the important thing to note is that the parts of the date 
            // were correctly interpreted, such as day, month, year etc.
            System.out.println("Date, with the default formatting: " + startDate);

            // Once converted to a Date object, you can convert 
            // back to a String using any desired format.
            String startDateString1 = df.format(startDate);
            System.out.println("Date in format MM/dd/yyyy: " + startDateString1);

            // Converting to String again, using an alternative format
            DateFormat df2 = new SimpleDateFormat("dd/MM/yyyy"); 
            String startDateString2 = df2.format(startDate);
            System.out.println("Date in format dd/MM/yyyy: " + startDateString2);
        }
    }

Sortie:

Date, with the default formatting: Wed Jun 27 00:00:00 BRT 2007
Date in format MM/dd/yyyy: 06/27/2007
Date in format dd/MM/yyyy: 27/06/2007
20
sother
    try 
    {  
      String datestr="06/27/2007";
      DateFormat formatter; 
      Date date; 
      formatter = new SimpleDateFormat("MM/dd/yyyy");
      date = (Date)formatter.parse(datestr);  
    } 
    catch (Exception e)
    {}

mois est MM, minutes est mm ..

9
mihsathe

La version concise:

String dateStr = "06/27/2007";
DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
Date startDate = (Date)formatter.parse(dateStr);  

Ajoutez un bloc try/catch pour une exception ParseException afin de vous assurer que le format est une date valide.

5
readikus