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]