Страница 1 из 1

Объект Calendar возвращает неверную зону

Добавлено: 25 ноя 2012, 16:52
powercat
Код

Код: Выделить всё

	private long RightNowInMillis(){
		Calendar calendar=Calendar.getInstance();
		calendar.setTimeInMillis(System.currentTimeMillis());
		return calendar.getTimeInMillis();
	}
И код (более короткий)

Код: Выделить всё

	private long RightNowInMillis(){
		Calendar calendar=Calendar.getInstance();
		return calendar.getTimeInMillis();
	}
Оба возвращают неправильный час. У меня UTC+4 (Москва). А эти коды возвращают UTC+0. У обоих offset в логах нулевой. т.е. зона неверная и возврат с разницей в 4 часа ))
Думал, косяк в винде, но она что в трее, что запросом через командную строку echo %time% показывает правильное время.

Собственно вопрос - где собаки зарылись?

Re: Объект Calendar возвращает неверную зону

Добавлено: 26 ноя 2012, 06:34
neoksi
Косяк в том, что ты календарю сам не определил часовую зону и он создался с использованием UTC+0 (Unix Time).
Разверни вопрос и скажи, что именно ты хочешь получить в итоге?
К примеру, этот код возвращает часовую зону устройства:

Код: Выделить всё

TimeZone.getDefault().getID()

Re: Объект Calendar возвращает неверную зону

Добавлено: 26 ноя 2012, 10:38
powercat
Мне надо определить время устройства, чтобы сработало оповещение.

Re: Объект Calendar возвращает неверную зону

Добавлено: 26 ноя 2012, 11:06
powercat
хахаха...ржака...вот я туплюуууу...все правильно, в AVD выставлено UTC+0 ))))))) а я на время компа смотрю ))))

Re: Объект Calendar возвращает неверную зону

Добавлено: 08 дек 2012, 11:39
dubok79
Я делаю так:
/**метод возвращает объект-календарь с учетом временной зоны по умолчанию*/
public static Calendar getCalendar(){
TimeZone tz = TimeZone.getDefault();
return Calendar.getInstance(tz);
}

Re: Объект Calendar возвращает неверную зону

Добавлено: 10 дек 2012, 09:18
powercat
dubok79 писал(а):Я делаю так:
/**метод возвращает объект-календарь с учетом временной зоны по умолчанию*/
public static Calendar getCalendar(){
TimeZone tz = TimeZone.getDefault();
return Calendar.getInstance(tz);
}
Calendar.getInstance(tz); - это и так делает, без лишних действий ) берет ту, что на устройстве.