我根据设置定期使用位置管理器获取位置,在测试用例中使用 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”并固定了日期,但时间却截然不同。真机和模拟器是一样的。我已经检查了两者的时区设置,它们都是正确的。
请告诉我我缺少什么?
Thanks.
EDIT:
我补充更多。
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
Code:
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
Using 纪元转换器您可以看到“自纪元以来的毫秒”值 1368590417000 实际上是 UTC,2013 年 5 月 15 日星期三 04:00:17。所以时间 040017 和日期 130515 是完全正确的。
我怀疑你实际上对什么感到困惑Location.getTime()确实 - 它返回修复时间,而不是当前时间。因此基本上,该位置是在 UTC 时间 04:00:17 获得的,无论当前日期/时间如何。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)