Android位置getTime()总是返回很大的不同时间

时间:2013-05-16 05:54:56

标签: android timezone location

我根据设置定期使用位置管理器,在测试用例中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;
}

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

1 个答案:

答案 0 :(得分:10)

这里的格式绝对没有错。

查看日志:

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您可以看到“millis since epoch”值1368590417000实际上是Wed,2013年5月15日04:00:17 UTC。所以040017的时间和130515的日期是完全正确的。

我怀疑你实际上对Location.getTime()所做的事感到困惑 - 它会返回修复的时间,而不是当前时间。所以基本上,该位置是在UTC时间04:00:17获得的,无论当前日期/时间如何。