JAVA:gmt到本地时间的转换

JAVA:gmt到本地时间的转换,java,timezone,Java,Timezone,我正在用java开发一个软件 我从服务器上得到一个GMT时间戳。 该软件可以在世界任何地方使用。 现在我想获取软件运行的本地时区,并将这个GMT时间转换为本地时间 请告诉我怎么做?看看乔达时间。它具有获取本地时区所需的所有与日期相关的功能: Calendar.getInstance().getTimeZone().getDisplayName() 对于转换: 假设您的时间戳是日期或编号: final DateFormat formatter = DateFormat.getDateTimeIns

我正在用java开发一个软件

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


请告诉我怎么做?

看看乔达时间。它具有获取本地时区所需的所有与日期相关的功能:

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

对于转换:


假设您的
时间戳是
日期
编号

final DateFormat formatter = DateFormat.getDateTimeInstance();
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println(formatter.format(timestamp));
如果时间戳是作为
字符串提供的,则首先必须对其进行解析。您将在中找到大量自定义格式的示例,一个内置格式的简单示例:

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()不会给你本地时区吗?