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
.
从这里的答案中,我得到的印象是Android设备不关心当前时区(由我当前的位置给出),并且仍然坚持使用原始的首选时区。
那么我是否正确,正确的唯一方法是使用我的坐标查询某个服务器以获取我当前的时区?
为什么设备在我旅行时会自动与当前网络时间同步,但不同步时区偏移量?手机信号塔应该知道它们在哪个时区偏移量运行。
为什么设备会自动与当前网络时间同步 当我旅行时,但不同步时区偏移量?手机信号塔 应该知道它们在哪个时区偏移量中运行。
是的,他们这样做,他们通常也提供这个。这就是为什么您在手机的"日期和时间"部分获得相关设置的原因。这也包括时区。然而,用户必须启用此功能,并且此值必须由通常有效的塔提供。