J'ai un horodatage au format 2017-18-08 11:45:30.345.
Je veux le convertir en heure d'époque, donc je fais ci-dessous:

String timeDateStr = "2017-18-08 11:45:30.345"; 
DateTimeFormatter dtf  = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss.SSS");
ZonedDateTime     zdt  = ZonedDateTime.parse(timeDateStr, dtf);        
System.out.println(zdt.toInstant().toEpochMilli());

J'obtiens en dessous de l'erreur:

java.time.format.DateTimeParseException: le texte '2017-18-08 11: 45: 30.345' n'a pas pu être analysé: impossible d'obtenir ZonedDateTime à partir de TemporalAccessor

J'ai également essayé différents formats mais j'ai toujours des erreurs.

4
User7723337 18 août 2017 à 15:24

2 réponses

Correction de votre code concernant aaaa-jj-MM. La valeur par minute peut également être comprise entre 1 et 59 et non 60. Vous en avez fourni 60. Il s'agit d'un autre moyen simple de résoudre le problème. Utilisez simplement la classe DateFormat.

String timeDateStr = "2017-18-08 12:59:30.345";
DateFormat df = new SimpleDateFormat("yyyy-dd-MM hh:mm:ss.SSS", Locale.ENGLISH);
try {
    Date d = df.parse(timeDateStr);
    System.out.println(d.toInstant().toEpochMilli());
} catch (ParseException e) {
    e.printStackTrace();
}
2
nagendra547 18 août 2017 à 12:36

Juste j'avais fait un petit changement dans la réponse de nagendra547

Veuillez vous référer au code ci-dessous: -

String timeDateStr = "2017-18-08 12:59:30.345";
DateFormat df = new SimpleDateFormat("yyyy-dd-mm hh:mm:ss.SSS", Locale.ENGLISH);
try {
    Date d = df.parse(timeDateStr);
    System.out.println(d.toInstant().toEpochMilli());
} catch (ParseException e) {
    e.printStackTrace();
}
0
Android Geek 18 août 2017 à 12:38