Я пытаюсь получить сегодня UNIX метку времени (секунды, прошедшее с 01/01/1970) в 00:00:00 с календарем в Java:Получение сегодня UNIX метку времени с календарем
public long getTodayTimestamp() {
Calendar c = Calendar.getInstance(Locale.getDefault());
c.setTimeInMillis(System.currentTimeMillis());
c.set( c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH),
0, 0, 0
);
return c.getTimeInMillis()/1000;
}
Проблема в том, что возвращает 1409608800 на сегодня (1 сентября), но когда я пытаюсь преобразовать его с некоторым конвертером (например, http://www.onlineconversion.com/unix_time.htm), я получаю Mon, 01 Sep 2014 22:00:00 GMT
, который является полночь 2 сентября по местному времени. В основном метод возвращает метку времени на 24 часа раньше, чем мне нужно.
Где я повредил?
Из-за "проблем"? Почему вы не можете использовать 'Date' или' System'? – chrylis
Из-за проблем мне понадобилось бы полчаса, чтобы объяснить. РЕДАКТИРОВАТЬ: oops, извините, эта часть была оставлена с того момента, когда вопрос был более пристальным. Конечно, я могу использовать Date или что-то еще в методе, но как?И почему это работает лучше, чем календарь в этом случае? – TimSim
Вы можете установить часовой пояс? (http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getInstance%28java.util.TimeZone,%20java.util.Locale%29) – Tom