在旅行时检测当前Android设备时区(不是用户首选)

时间:2016-02-23 08:49:09

标签: android date datetime timezone timezone-offset

关于Android中的时区的许多问题已在SO上提出, 然而,在经历了所有这些之后,我仍然没有明确的答案,为什么会发生以下情况:

假设我住在德国,因此首选时区偏移+1。然后我决定去美国。在美国,我的设备向服务器发送一条消息,其中包含我现在在美国的本地时间戳。 我使用以下代码来获取时间戳:

 SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSZ");
 fmt.setTimeZone(TimeZone.getDefault());
 String timeStamp = fmt.format(new Date());

我得到的时间戳是例如:2016-02-20 08:32:01.000769+01 虽然08:32:01是我当时所在地的正确时间,但偏移仍然是+1,而它应该与-6类似。

根据SO的答案,我得到的印象是Android设备不关心当前时区(由我当前位置给出)并且仍然坚持原来的首选时区。

所以我是对的,唯一可以做到这一点的方法是用我的坐标查询一些服务器以获取我当前的时区吗?

为什么设备会在我旅行时自动与当前网络时间同步,但不会同步时区偏移量?手机信号塔应该知道它们在哪个时区偏移。

1 个答案:

答案 0 :(得分:1)

  

设备如何自动与当前网络时间同步   我旅行时,但不同步时区偏移?细胞塔   应该知道他们在哪个时区偏移。

是的,他们这样做,他们通常也提供这个。这就是为什么你在手机中获得相关设置"日期和时间"部分。这也包括时区。但是,用户必须启用此功能此值必须由塔提供,而 通常