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

sun*_*hun 3 timezone android 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);
Run Code Online (Sandbox Code Playgroud)

但是我的日期与我的期望不同.我写的当前时间大约是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
Run Code Online (Sandbox Code Playgroud)

码:

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;
}
Run Code Online (Sandbox Code Playgroud)

而已.这正是我使用的代码.

Jon*_*eet 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
Run Code Online (Sandbox Code Playgroud)

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

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