我正在開發一個java軟件。JAVA:gmt到本地時間轉換
我從服務器得到GMT格式的時間戳。該軟件可以在世界任何地方使用。 現在我想獲取軟件運行的本地時區,並將此GMT時間轉換爲當地時間。
請告訴我該怎麼做?
我正在開發一個java軟件。JAVA:gmt到本地時間轉換
我從服務器得到GMT格式的時間戳。該軟件可以在世界任何地方使用。 現在我想獲取軟件運行的本地時區,並將此GMT時間轉換爲當地時間。
請告訴我該怎麼做?
爲了讓您的本地時區:
Calendar.getInstance()getTimeZone獲取()getDisplayName()
有關轉換:
看看Joda-Time。它具有所有日期相關的功能需要一個
假設你timestamp
要麼是Date
或Number
:
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));
假設格式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();
不會簡單的日曆。 getInstance()。getTimeZone()。getDisplayName()給你當地的時區? – 2012-04-14 11:44:56