我从服务器获取有关某个事件的时间数据(UTC)。例如,它应该在 5 小时内发生。
但是当用户更改设备时间(例如 +2 小时)时,事件发生前的时间变为 3 小时(而不是 5 小时)
但是如果用户更改的不是时间而是时区,那么一切正常。 然后我决定检查时区偏移。即使我将时间更改为 +2 小时,系统仍然认为我处于我所在时区的时间。
时间更改前后的时区偏移量相同。
那该怎么处理呢?
我希望如果用户更改时间 +2 小时,那么仍然显示事件发生前的 5 小时,而不是 3 小时。
我使用Calendar.getInstance().time.time
来检查我的时间。
碰巧系统时间是 15:00, Activity 将在 20:00,用户将时间更改为 19:00,应用程序显示 Activity 将在一小时后进行。
最佳答案
如果您获得 UTC 时间,则可以将其与 UTC 时间进行比较(当然,UTC 时间不会前后移动)。使用 java.time 事情变得更容易。
例如:
Instant fromServer = serverTime.toInstant(ZoneOffset.UTC);
Instant now = Instant.now();
long diff = now.until(fromServer, ChronoUnit.HOURS);
关于java - Android:时间和时区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076807/