Java (среда обработки) не предоставит мне местное время - PullRequest
0 голосов
/ 20 сентября 2011

Я пытаюсь настроить время epoc для местного часового пояса (т.е. GMT-7, но он показывает GMT). Я уверен, что это должно сработать, но это не так ...

Calendar localTime = new GregorianCalendar(TimeZone.getDefault());
Date dd = localTime.getTime();
long t = dd.getTime()/1000; 
System.out.printf("%d\n",t);

Но он по-прежнему выводит время epoc на основе GMT, а не GMT-7 (мой часовой пояс). Поработав некоторое время, я заставил это работать ...

Date ddd = new Date();
long t = ddd.getTime() + TimeZone.getDefault().getOffset( ddd.getTime() );
t = t/1000;

Но почему не работает первый блок?

1 Ответ

0 голосов
/ 20 сентября 2011

A Date объект просто переносит время UTC в миллисекунды с начала эпохи. Вот так все время представляется «под капотом» в Java. Это также делает его совместимым для работы. Всякий раз, когда вы хотите распечатать что-либо, примените к нему смещение TimeZone и DST.

Вот почему класс SimpleDateFormat принимает TimeZone, но в классе Date нет установщика TimeZone.

Обязательно: я слышал, Joda Time - намного более простой в использовании API даты и времени.

Кроме того, посмотрите этот пост о стандартных библиотеках даты и времени в Java.

...