Я хочу преобразовать эту метку времени GMT в GMT + 13:
2011-10-06 03:35:05
Я попробовал около 100 различных комбинаций DateFormat, TimeZone, Date, GregorianCalendar и т. Д., Чтобы попытаться выполнить эту ОЧЕНЬ базовую задачу.
Этот код делает то, что я хочу для ТЕКУЩЕГО ВРЕМЕНИ:
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("GMT+13"));
String newZealandTime = formatter.format(calendar.getTime());
Но я хочу установить время, а не использовать текущее время.
Я обнаружил, что каждый раз, когда я пытаюсь установить время следующим образом:
calendar.setTime(new Date(1317816735000L));
используется TimeZone локальной машины.Это почему?Я знаю, что когда «new Date ()» возвращает время UTC + 0, так почему, когда вы устанавливаете время в миллисекундах, оно больше не предполагает, что время указано в UTC?
Возможно:
- Установка времени для объекта (Calendar / Date / TimeStamp)
- (возможно) Установка TimeZone начальной отметки времени (calendar.setTimeZone (...))
- Отформатируйте отметку времени с помощью нового часового пояса (formatter.setTimeZone (...)))
- Возвращает строку с новым часовым поясом.(formatter.format (calendar.getTime ()))
Заранее благодарен за любую помощь: D