Android location getTime()总是返回大不同的时间



我根据设置定期使用位置管理器获取位置,在测试用例中使用2分钟,并尝试使用location. getime()方法。我没有使用LocationManager.getLastKnownLocation()。文档显示它是UTC时间,我将其转换为本地时间,如下所示:

Date d = new Date(location.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddkkmmss';
sdf.setTimeZone(TimeZone.getTimneZone("UTC");
sdf.format(d);

但是我得到的日期和我期望的不一样。我现在写的时间大约是130516155000(2013-05-16 15:50:00),但我得到的是040015130515。我删除了时区,并将时区设置为"GMT",日期也固定了,但时间却大不相同。在实际设备和仿真器中是相同的。我已经检查了两者的时区设置,它们是正确的。请告诉我我错过了什么?

谢谢。编辑:

我加了更多

Log:
05-16 16:09:30.227: D/location.getTime()(1279): 1368590417000
05-16 16:09:30.237: D/NMEAGPRMCTime(1279): 040017
05-16 16:09:30.247: D/NMEAGPRMCDate(1279): 130515
代码:

public static String NMEAGPRMCTime(Date d)
{
    SimpleDateFormat sdf = new SimpleDateFormat("kkmmss");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    String result = sdf.format(d);
    Log.d("NMEAGPRMCTime", result);
    return result;
}

public static String NMEAGPRMCDate(Date d)
{
    SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    String result = sdf.format(d);
    Log.d("NMEAGPRMCDate", result);
    return result;
}

就是这样。这就是我所使用的代码

这里的格式绝对没有问题。

查看日志:

05-16 16:09:30.227: D/location.getTime()(1279): 1368590417000
05-16 16:09:30.237: D/NMEAGPRMCTime(1279): 040017
05-16 16:09:30.247: D/NMEAGPRMCDate(1279): 130515

使用epochconverter,你可以看到1368590417000的"millis since epoch"值实际上是Wed, 15 May 2013 04:00:17 UTC。所以040017的时间和130515的日期是完全正确的。

我怀疑你实际上对Location.getTime()的作用感到困惑-它返回修复的时间,而不是当前时间。基本上,那个位置是在04:00:17 UTC获得的,不管当前的日期/时间。

相关内容

  • 没有找到相关文章