JAVA:gmt到本地时间转换

时间:2012-04-14 11:35:50

标签: java timezone

我正在用java开发一个软件。

我从服务器获取GMT的时间戳。 该软件可以在世界任何地方使用。 现在我想获得运行软件的本地时区,并将此GMT时间转换为当地时间。

请告诉我怎么做?

4 个答案:

答案 0 :(得分:5)

假设您的timestampDateNumber

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

答案 1 :(得分:4)

获取您当地的时区:

Calendar.getInstance()。getTimeZone()。getDisplayName()

转换:

Date TimeZone conversion in java?

答案 2 :(得分:0)

看看Joda-Time。它具有所需的所有日期相关功能

答案 3 :(得分: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();