Comment convertir une chaîne en date - Java

Comment convertir une chaîne en date - Java

Dans ce tutoriel, nous allons vous montrer comment convertir une chaîne enjava.util.Date. De nombreux débutants Java sont bloqués dans la conversion de date, espérons que ce guide récapitulatif vous aidera à certains égards.

    // String -> Date
    SimpleDateFormat.parse(String);

    // Date -> String
    SimpleDateFormat.format(date);

Reportez-vous au tableau ci-dessous pour certains des modèles de date et d'heure courants utilisés dansjava.text.SimpleDateFormat, reportez-vous à ceJavaDoc

Lettre

La description

Exemples

y

Year

2013

M

Mois dans l'année

07, 7 juillet

d

Jour dans le mois

1-31

E

Nom du jour dans la semaine

Vendredi Dimanche

a

Am/pm marker

MATIN APRÈS-MIDI

H

Heure par jour

0-23

h

Heure en am / pm

1-12

m

Minute en heure

0-60

s

Seconde en minute

0-60

Note
Vous pouvez vous intéresser à cet exemple Java 8 -How to convert String to LocalDate

1. String = 7-juin-2013

Si 3 ‘M’, alors le mois est interprété comme du texte (lun-déc), sinon le numéro (01-12).

TestDateExample1.java

package com.example.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample1 {

    public static void main(String[] argv) {

        SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
        String dateInString = "7-Jun-2013";

        try {

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

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

    }

}

Sortie

Fri Jun 07 00:00:00 MYT 2013
07-Jun-2013

2. Chaîne = 07/06/2013

TestDateExample2.java

package com.example.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample2 {

    public static void main(String[] argv) {

        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

Fri Jun 07 00:00:00 MYT 2013
07/06/2013

3. String = Fri, 7 juin 2013

TestDateExample3.java

package com.example.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample3 {

    public static void main(String[] argv) {

        SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy");
        String dateInString = "Fri, June 7 2013";

        try {

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

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

    }

}

Sortie

Fri Jun 07 00:00:00 MYT 2013
Fri, Jun 07 2013

4. String = vendredi 7 juin 2013 12:10:56 PM

TestDateExample4.java

package com.example.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample4 {

    public static void main(String[] argv) {

        SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
        String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";

        try {

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

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

    }

}

Sortie

Fri Jun 07 12:10:56 MYT 2013
Friday, Jun 07, 2013 12:10:56 PM

5. Chaîne = 2014-10-05T15: 23: 01Z

Le suffixe Z signifie UTC,java.util.SimpleDateFormat ne l’analyse pas correctement, vous devez remplacer le suffixe Z par «+0000».

TestDateExample5.java

package com.example.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample5 {

    public static void main(String[] argv) {

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        String dateInString = "2014-10-05T15:23:01Z";

        try {

            Date date = formatter.parse(dateInString.replaceAll("Z$", "+0000"));
            System.out.println(date);

            System.out.println("time zone : " + TimeZone.getDefault().getID());
            System.out.println(formatter.format(date));

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

    }

}

Sortie

Sun Oct 05 23:23:01 MYT 2014
time zone : Asia/Kuala_Lumpur
2014-10-05T23:23:01+0800

Dans Java 8, vous pouvez le convertir en objetjava.time.Instant et l'afficher avec un fuseau horaire spécifié.

TestDateExample6.java

package com.example.date;

import java.time.*;

public class TestDateExample6 {

    public static void main(String[] argv) {

        String dateInString = "2014-10-05T15:23:01Z";

        Instant instant = Instant.parse(dateInString);

        System.out.println(instant);

        //get date time only
        LocalDateTime result = LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId()));

        System.out.println(result);

        //get date time + timezone
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Africa/Tripoli"));
        System.out.println(zonedDateTime);

        //get date time + timezone
        ZonedDateTime zonedDateTime2 = instant.atZone(ZoneId.of("Europe/Athens"));
        System.out.println(zonedDateTime2);

    }

}

Sortie

2014-10-05T15:23:01Z
2014-10-05T15:23:01
2014-10-05T17:23:01+02:00[Africa/Tripoli]
2014-10-05T18:23:01+03:00[Europe/Athens]