Я получаю местоположение с помощью диспетчера местоположения в зависимости от настройки, 2 минуты в тестовом примере и пытается использовать метод location.geTime(). Я не использую LocationManager.getLastKnownLocation(). Документ говорит, что это UTC время и я преобразовал его к местному времени, как показано ниже:Местоположение Android getTime() всегда возвращает большое разное время
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», а дату зафиксировали, но время было довольно другой. В реальном устройстве и эмуляторе такие же. И я уже проверил настройку часового пояса в обоих, и они верны. Пожалуйста, скажите мне, что мне не хватает?
Спасибо.
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
Код:
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;
}
Вот так. Это код, который я использую.
Кажется, очень * маловероятно, что вы получите этот вывод из этого формата - это предполагает, что месяц равен 0! Затем снова код, который вы опубликовали, недействителен, так что, возможно, вы фактически не используете формат, который, как вы утверждаете. Пожалуйста, введите * действительный * код, который соответствует реальному коду, который вы используете. –
Кроме того, что произойдет, если вы зарегистрируете 'location.getTime(). ToString()'? Это будет отображаться в часовом поясе системы по умолчанию, но, по крайней мере, это разделит проблему «что такое значение» от форматирования. –
@ Jon Спасибо. Я добавил еще и location.getTime() не является объектом, а примитивным типом, поэтому вы не можете использовать toString(). – sunghun