2017-09-04 2 views
-3

J'ai reçu la chaîne de date du serveur de notification au format suivant. 2017-09-04T07: 09: 30,269 + 00: 00Android Date de chaîne «2017-09-04T07: 09: 30.269 + 00: 00» convertir en long

Je veux qu'il convertir en temps pour enregistrer dans la base de données.

public static long convertStringDatetoLong(final String date, final String inputFormat) { 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat(inputFormat); 
     try { 
      Date outputDate = simpleDateFormat.parse(date); 
      return outputDate.getTime(); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return 0; 
    } 

Puis-je appeler convertStringDatetoLong(date, "yyyy-mm-dd'T'HH:mm:ss.SSSXXX"); Mais je trouve que le converti est en quelque sorte de mal longtemps.

Le temps de résultat est 1483513770269 ce qui est faux. il devrait être parfois comme 1.504.509.270.911 qui commence par 15 ... (que je suis arrivé avec currentTimeMillis)

2017-09-04T07: 09: 30,269 + 00: 00, le temps d'entrée zone n'est pas le même comme Mon fuseau horaire qui est GMT + 08: 00

Je ne sais pas comment le convertir dans le fuseau horaire de l'appareil et obtenir les bonnes millisecondes à enregistrer.

Mise à jour:

Désolé que je fais chose stupide. ce devrait être MM pas mm.

Répondre

0

Vous pouvez facilement le faire avec l'objet ZonedDateTime comme ceci:

String example = "2017-09-04T07:09:30.269+00:00"; 
OffsetDateTime offset = OffsetDateTime.parse(example); 
ZonedDateTime result = offset.atZoneSameInstant(ZoneId.systemDefault()); // Put you wanted zone here 

A partir de là vous pouvez facilement obtenir l'horodatage comme Millis avec cette ligne de code:

Long timestamp = startTime.toInstant().getEpochSecond(); 
+0

Cette API requise 26. Je dois soutenir l'API de niveau inférieur> 16. –

+0

Oh ok qui n'a pas été bref dix partout donc je m'attendais à utiliser un niveau élevé d'API. – Nico

0

Essayez cela,

String timeStr = "2017-09-04T07:09:30.269+00:00"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
Date Obj= null; 
try { 
    Obj = sdf.parse(timeStr); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

long time = Obj.getTime(); 
System.out.println(time);