我正在用java开发一个软件。
我从服务器获得 GMT 时间戳。该软件可以在世界任何地方使用。现在我想获取软件运行的本地时区,并将这个 GMT 时间转换为本地时间。
请告诉我该怎么做?
假设您timestamp
是 aDate
或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();