在我的应用程序中,我需要解析包含事件结束时间的JSON。当这个事件正在进行时,我需要计算剩下的时间来完成那个evet。要做到这一点我使用这段代码:currentTimeMillis()不返回预期结果
// I get the time and convert it from millis to seconds
long end = System.currentTimeMillis()/1000;
techsTime.add((int) (queue.event.get("event0").endtime - end));
一旦我在几秒钟的时间,我将其转换为d,H,M,S。在Optimus Black和HTC Desire等设备中,这像一种魅力。但是今天我已经用朋友的ZTE Blade测试了我的应用程序,事件的剩余时间非常奇怪。它出现在负数和距离原始数字非常远的数字。我测试过不同值的应用程序,也没有模式,它们就像随机数,如:
擎天柱黑色 - >21米32S
中兴刀片 - > -38m -57s
我已经认为System.currentTimeMillis()在两个设备中可能不同,但他们都使用CM7作为操作系统。
问题是,我的应用程序几乎在全球范围内使用...我要检查两个设备的时区... – 2012-04-09 18:29:19
你是righ!这是时区!现在的问题就是我之前说过的,我的应用程序在世界范围内使用,这意味着不同的时区...也许检查电话的时区并进行必要的操作?任何其他想法? – 2012-04-09 18:38:23
没有时区本身不是问题,因为你计算绝对时间(自时代以来的时间)。如果您的某个设备无法正确计算此问题,则会发生此问题 – 2012-04-09 18:38:37