2012-05-15 9 views
12
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
java.util.Date fromDate = cal.getTime(); 
System.out.println(fromDate); 

Der obige Code druckt das Datum nicht in GMT, sondern druckt in der lokalen Zeitzone. Wie kann ich ein GMT äquivalent Datum ab dem aktuellen Datum erhalten (unter der Annahme, dass das Programm in Japan oder SFO laufen kann)So wandeln Sie ein lokales Datum in GMT um

Antwort

20

Wie wäre es damit -

public static void main(String[] args) throws IOException { 
    Test test=new Test(); 
    Date fromDate = Calendar.getInstance().getTime(); 
    System.out.println("UTC Time - "+fromDate); 
    System.out.println("GMT Time - "+test.cvtToGmt(fromDate)); 
} 
private Date cvtToGmt(Date date){ 
    TimeZone tz = TimeZone.getDefault(); 
    Date ret = new Date(date.getTime() - tz.getRawOffset()); 

    // if we are now in DST, back off by the delta. Note that we are checking the GMT date, this is the KEY. 
    if (tz.inDaylightTime(ret)){ 
     Date dstDate = new Date(ret.getTime() - tz.getDSTSavings()); 

     // check to make sure we have not crossed back into standard time 
     // this happens when we are on the cusp of DST (7pm the day before the change for PDT) 
     if (tz.inDaylightTime(dstDate)){ 
      ret = dstDate; 
     } 
    } 
    return ret; 
} 

Testergebnis:
UTC-Zeit - Di 15 Mai 16.24.14 IST 2012
GMT-Zeit - Di 15 10.54.14 IST 2012

Mai
+0

Vielen Dank. Es hilft mir –

+0

Sie begrüßen @HaiderAli :) –

15
DateFormat gmtFormat = new SimpleDateFormat(); 
TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
gmtFormat.setTimeZone(gmtTime); 
System.out.println("Current DateTime in GMT : " + gmtFormat.format(new Date())); 

Allgemeiner können Sie auf diese Weise zu einer (gültigen) Zeitzone konvertieren


Siehe

+1

gmtFormat.format (new Date()) Rückgabetyp ist String.aber ich möchte Datum. –

+1

Sie können 'this String' parsieren, um die Date-Instanz zu erstellen –

+0

Sobald Sie analysieren, wird es wieder in Ihr lokales Zeitzonenformat umgewandelt. In meinem Fall konvertiert es es zurück zu IST. Wie man es in GMT behält – user2531799

1

Gefällt mir SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));?

Verwandte Themen