2016-02-01 7 views
5

Ich arbeite in Datum Konvertierung in Java, dass ich folgende Code-Snippet verwenden, um die UTC-Zeit in IST Format zu konvertieren.Es funktioniert ordnungsgemäß in das lokale, wenn ich es laufe, aber wenn ich ihn im Server seine nicht umwandel, seine Anzeige nur die utc Zeit selbst zur Verfügung stelle. Ist dort irgendeine Konfiguration in der Serverseite benötigt. Bitte helfen Sie mir heraus.Konvertierung von UTC zu IST Zeit in Java funktioniert in LOCAL, aber nicht in CLOUD SERVER

Code-Schnipsel:

DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String pattern = "dd-MM-yyyy HH:mm:ss"; 
    SimpleDateFormat formatter; 
    formatter = new SimpleDateFormat(pattern); 

    try { 
     String formattedDate = formatter.format(utcDate); 
     Date ISTDate = sdf.parse(formattedDate); 
String ISTDateString = formatter.format(ISTDate); 
      return ISTDateString; 
} 
+2

Was genau meinen Sie mit "IST" (indische Standardzeit; irische Standardzeit; Israel Standardzeit?); und wie lautet die Standardzeitzone der JVM auf dem Server? –

+0

Was ist der Typ von 'UtcDate'? Ich nehme an, es ist ein 'java.util.Date'. –

+0

Ihr Code wird nie tatsächlich zu IST konvertiert, Sie setzen buchstäblich sdf auf "UTC" und analysieren dann einfach das formatierte Datum. – Paddez

Antwort

2

Java Date Objekte sind bereits/immer in UTC. Die Zeitzone wird beim Formatieren von Text angewendet. A Date kann (sollte nicht!) In einer anderen Zeitzone als UTC liegen. Das gesamte Konzept der Umwandlung von utcDate in ISTDate ist fehlerhaft.
(BTW:. Verruf Java Konventionen sagt es istDate sein sollte)

Nun, wenn Sie den Code zurück, das Datum als Text in IST Zeitzone wollen, dann müssen Sie verlangen, dass:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // Or whatever IST is supposed to be 
return formatter.format(utcDate);