2012-04-14 16 views
5

Ich entwickle eine Software in Java.JAVA: gmt zur lokalen Zeitkonvertierung

Ich bekomme einen Zeitstempel in GMT von einem Server. Die Software kann überall auf der Welt verwendet werden. Jetzt möchte ich die lokale Zeitzone erhalten, in der die Software läuft und diese GMT Zeit in die lokale Zeit umrechnen.

Bitte sagen Sie mir, wie das geht?

+1

pflegt ein einfaches Kalender. getInstance(). getTimeZone(). getDisplayName() geben Sie die lokale Zeitzone? –

Antwort

0

Werfen Sie einen Blick auf Joda-Time. Es verfügt über alle Datum bezogenen Funktionen benötigt man

4

Ihr Angenommen timestamp ist entweder ein Date oder Number:

final DateFormat formatter = DateFormat.getDateTimeInstance(); 
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
System.out.println(formatter.format(timestamp)); 

Wenn Ihr Zeitstempel als String angegeben ist, müssen Sie ihn zuerst analysieren. Hier finden Sie viele Beispiele mit benutzerdefinierten Format in SimpleDateFormat, ein einfaches Beispiel mit eingebautem im Format finden:

final DateFormat formatter = DateFormat.getDateTimeInstance(); 
formatter.setTimeZone(TimeZone.getTimeZone("GMT")); 
final Date timezone = formatter.parse("2012-04-14 14:23:34"); 
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); 
System.out.println(formatter.format(timezone)); 
0

die Serverzeit im Format Angenommen yyyy/MM/dd HH:mm:ss.SSS dies funktioniert:

String serverTime = "2017/12/06 21:04:07.406"; // GMT 
ZonedDateTime gmtTime = LocalDateTime.parse(serverTime, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS")).atZone(ZoneId.of("GMT")); 
LocalDateTime localTime = gmtTime.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();