2012-04-14 41 views
5

我正在開發一個java軟件。JAVA:gmt到本地時間轉換

我從服務器得到GMT格式的時間戳。該軟件可以在世界任何地方使用。 現在我想獲取軟件運行的本地時區,並將此GMT時間轉換爲當地時間。

請告訴我該怎麼做?

+1

不會簡單的日曆。 getInstance()。getTimeZone()。getDisplayName()給你當地的時區? – 2012-04-14 11:44:56

回答

0

看看Joda-Time。它具有所有日期相關的功能需要一個

4

假設你timestamp要麼是DateNumber

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

如果您的時間戳記爲String,那麼您首先必須對其進行解析。你會發現很多的例子使用自定義格式SimpleDateFormat,帶內置格式一個簡單的例子:

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

假設格式yyyy/MM/dd HH:mm:ss.SSS服務器時這個作品:

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();