2016-07-20 30 views
0

Hier in meinem Code bekomme ich die aktuelle Zeit und dann formatieren Sie es nach "UTC" Zeitzone und dann geparst es mit der gleichen Zeitzone daher konvertiert es zu einem Datum. Das Problem ist, dass ich das Datum als „Mi 20. Juli 13.04.51 GMT + 05: 00 2016“ erhalten als seine formatiert und analysieren, wie in dem folgenden CodeJava SimpleDateFormat analysiert Datum für gegebenes Gebietsschema nicht korrekt?

Calendar calendar = Calendar.getInstance(); 
    Date currentDate = calendar.getTime(); 
    //gives time as "Wed Jul 20 13:04:51 GMT+05:00 2016" 

    dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z"); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

    String dateText = dateFormat.format(currentDate); 
    //This formats dates as following "Wed, 20 Jul 2016 08:04:51 +0000" 

Jetzt uptil hier Dinge funktionieren, die Zeit mit Zeitzone GMT + 05: 00 mit GMT Standard UTC konvertiert + 00: 00, die

Date setteledDate = dateFormat.parse(dateText); 

Jetzt Parsen das Datum wie oben ergibt folgendes Datum von 0.000 im formatierten Datum angezeigt. "Wed Jul 20 13:04:51 GMT + 05: 00 2016". Das Problem ist, dieses Datum ist wieder in GMT + 5 und der ganze Zweck von mir bekommen aktuelle Datum Formatierung es und als Parsing ist es verloren, weil der Zweck war, das aktuelle Datum nach "UTC" (GMT + 00: 00) zu bekommen.

Bitte helfen.

+0

Welche Versionen von Java verwenden u? –

+0

Ich verwende Java 7. –

+0

http://stackoverflow.com/questions/21939967/java-simpledateformat-interpret-parse-string-as-utc –

Antwort

0

Ersetzen Sie Z im SimpleDateFormat-Format.

Calendar calendar = Calendar.getInstance(); 
Date currentDate = calendar.getTime(); 

//gives time as "Wed Jul 20 13:04:51 GMT+05:00 2016" 

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

String dateText = dateFormat.format(currentDate); 
Log.e("date",dateText); 
//output Wed, 20 Jul 2016 09:01:20 UTC 

dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
dateText = dateFormat.format(currentDate); 
Log.e("date",dateText); 
//output Wed, 20 Jul 2016 09:02:04 GMT+00:00 

// aktualisieren

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"); 
     TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 
     try { 

      Date date = dateFormat.parse("Wed Jul 20 13:04:51 GMT+05:00 2016"); 
      Log.e("date",date.toString()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
+0

Warum ändern Sie die Zeitzone? –

+0

Ich gebe nur ein Beispiel für zwei Zeitzonen – iAndroid

+0

Ja, es entspricht der Zeitzone, die ich eingestellt habe. Sobald ich currentDate mit der UTC-Zeitzone formatiert habe, bekomme ich die korrekte Datumszeichenkette, aber wenn ich es mit demselben simpleDateFormat-Objekt parse, um dieses in Date-Objekt zu konvertieren (mit neuer Zeitzone), gibt es mir das Datum zurück, das ich am Anfang hatte ist mit der anfänglichen Zeitzone). –