2017-08-07 10 views
-2

J'ai un cas spécifique que je dois prendre le champ date, le convertir en heure GMT, puis le convertir en format String spécifique.Convertir l'heure GMT en format de chaîne spécifique

Cela donne à l'heure GMT:

public static void main(String[] args) {   
    Date rightNow = Calendar.getInstance().getTime(); 
    DateFormat gmtFormat = new SimpleDateFormat(); 
    TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
    gmtFormat.setTimeZone(gmtTime); 
    System.out.println("GMT Time: " + gmtFormat.format(rightNow)); 
    String gmtDate=gmtFormat.format(rightNow); 
} 

Maintenant je dois que le temps de GMT convertir au format chaîne yyyy-MM-ddTHH:mm:ssZ Exemple heure dans mon fuseau horaire 17:10:00, GMT 15:10:00 donc cela signifie la sortie finale devrait être 2017-08-07T15:10:00Z

J'ai essayé ce code à ajouter:

String pattern = "yyyy-MM-ddTHH:mm:ssZ"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); 
String date = simpleDateFormat.format(gmtDate); 
System.out.println(date); 

Mais bien sûr, je reçois l'exception parce que la chaîne ne peut pas être convertie comme ceci, mais j'ai besoin de quelque chose de similaire.

+1

-vous * avez * à utiliser l'ancienne API de date/heure? Le paquet java.time est beaucoup, beaucoup plus agréable. Au-delà de ça, on ne sait pas quelle exception vous obtenez ou où ... –

+0

Salut, je reçois une exception à cette ligne: SimpleDateFormat simpleDateFormat = new SimpleDateFormat (pattern); cette exception dans le thread "principal" java.lang.IllegalArgumentException: caractère motif illégal 'T' \t à java.text.SimpleDateFormat.compile (Source inconnue) \t à java.text.SimpleDateFormat.initialize (Source inconnue) – Dejan

+2

droit, avez-vous enquêté sur cela? Fondamentalement, votre modèle est cassé - vous devez citer le 'T' et le' Z'. –

Répondre

-1

fusionner vos 2 codeblocks ensemble:

public static void main(String[] args) {   
    Date rightNow = Calendar.getInstance().getTime(); 
    String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; 
    DateFormat gmtFormat = new SimpleDateFormat(pattern); 
    TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
    gmtFormat.setTimeZone(gmtTime); 
    System.out.println("GMT Time: " + gmtFormat.format(rightNow)); 
} 

Ou "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" selon JavaDoc ...

+0

cela ne fonctionne pas: Exception dans le thread "principal" java.lang.IllegalArgumentException: caractère motif illégal 'T' \t à java.text.SimpleDateFormat.compile (Source inconnue) \t à java.text.SimpleDateFormat.initialize (Information inconnue Source) \t à java.text.SimpleDateFormat. (source inconnue) \t at java.text.SimpleDateFormat. (Source inconnue) \t à ibis.test.EricssonDate.main (EricssonDate.java:34) – Dejan

+0

C'est exactement la même exception que je reçois avec mon code aussi – Dejan

+0

Pour être honnête, je viens de copier votre modèle original, a fait pas l'air de travailler. Corrigé par @RobinTopper ... –