Java Konvertieren GMT/UTC in die Lokale Zeit funktioniert nicht wie erwartet

Ist, um eine reproduzierbare Szenario, mache ich die folgenden

  1. Holen Sie sich die aktuelle Systemzeit (lokale Zeit)
  2. Konvertieren Lokale Zeit zu UTC //Funktioniert Bis hier
  3. Rückseite der UTC-Zeit, zurück in die lokale Zeit. Gefolgt 3 verschiedene Ansätze (siehe unten) aber alle 3 Ansätze behält die Zeit in UTC nur.

    {

    long ts = System.currentTimeMillis();
    Date localTime = new Date(ts);
    String format = "yyyy/MM/dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat (format);
    
    //Convert Local Time to UTC (Works Fine) 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date gmtTime = new Date(sdf.format(localTime));
    System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" + gmtTime.toString() + "-" + gmtTime.getTime());
    
    //Reverse Convert UTC Time to Locale time (Doesn't work) Approach 1
    sdf.setTimeZone(TimeZone.getDefault());        
    localTime = new Date(sdf.format(gmtTime));
    System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" + gmtTime.toString() + "-" + gmtTime.getTime());
    
    //Reverse Convert UTC Time to Locale time (Doesn't work) Approach 2 using DateFormat
    DateFormat df = new SimpleDateFormat (format);
    df.setTimeZone(TimeZone.getDefault());
    localTime = df.parse((df.format(gmtTime)));
    System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:" + gmtTime.toString() + "-" + gmtTime.getTime());
    
    //Approach 3
    Calendar c = new GregorianCalendar(TimeZone.getDefault());
    c.setTimeInMillis(gmtTime.getTime());
    System.out.println("Local Time " + c.toString());

    }

InformationsquelleAutor der Frage Vinod Jayachandran | 2013-10-15

Schreibe einen Kommentar