2017-04-24 4 views
0

je dois convertir une UTC chaîne de temps dans mon heure locale, le code fonctionne très bien dans mon PC quand je le lance sur Eclipse, cependant, je reçois des résultats incorrects sur Android. Je suis coincé, quelqu'un peut-il m'aider?problème de conversion temps android utc

est Ci-dessous le code que je me sers, serait « 24/04/2017 01h00 » une entrée exemple, cela donnera un résultat de « 11:00 » qui est ce que je suis En attendant, cependant, il retourne toujours "10:00 AM" sur Android.

public String convertUTCTime(String utcTime) { 

    Calendar cal = Calendar.getInstance(); 
    TimeZone tz = cal.getTimeZone(); 

    SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm a"); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

    try { 
     Date date = sdf.parse(utcTime); 
     sdf = new SimpleDateFormat("HH:mm a"); 
     sdf.setTimeZone(tz); 
     String format = sdf.format(date); 
     return format; 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return "Not applicable"; 
} 
+0

Êtes-vous le envisage la possibilité d'économies de lumière de jour? –

+0

@james Utilisez un format de date valide pour analyser la date à laquelle vous utilisez le format 24 heures avec ap/pm. Ce lien n'est pas valide https://developer.android.com/reference/java/text/SimpleDateFormat.html pour votre compréhension. –

+0

Veuillez remplacer aaaa-MM-jj HH: mm a aaaa-MM-jj hh: mm a Ceci vous donnera un résultat valide –

Répondre

0

Regardez, je préparais la fonction: -

public static String getUTCDate(String timestamp, String DateFormat) { 
     SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm aa", Locale.getDefault()); 
     originalFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
     SimpleDateFormat targetFormat = new SimpleDateFormat(DateFormat, Locale.getDefault()); 
     targetFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
     Date date = null; 
     String formattedDate = null; 
     try { 
      date = originalFormat.parse(timestamp); 
      formattedDate = targetFormat.format(date); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return formattedDate; 
    } 

Obtenez la valeur en appelant -

Utils.getUTCDate("2017-04-24 01:00 AM", "HH:mm a") 
+0

Hey, Merci pour la réponse, mais votre méthode ne fonctionne pas pour moi, mais je reçois la mauvaise sortie. – james

+0

Donnez-moi votre avis. Assurez-vous que votre contribution est «2017-04-24 01:00 AM» plutôt que «2017-04-24 1:00 AM». – Wizard

+0

J'ai codé en dur l'entrée comme "2017-04-24 01:00 AM" il renvoie encore "10h00" dans Android, fonctionne très bien dans mon PC tho. – james