7

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

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

请告诉我该怎么做?

4

4 回答 4

4

要获取您的本地时区:

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

对于转换:

java中的日期时区转换?

于 2012-04-14T11:51:23.687 回答
4

假设您timestamp是 aDateNumber

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));
于 2012-04-14T12:25:18.357 回答
0

看看乔达时间。它具有人们需要的所有与日期相关的功能

于 2012-04-14T11:41:35.970 回答
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();
于 2017-12-14T19:35:05.210 回答