А для самых быстрых - это не сработает должным образом ...
потому что это нормализует часовой пояс к UTC (или вашему локальному машинному времени, в зависимости от версии Java). Что мне нужно, так это calendar.getTimeZone (). GetRawOffset () для возврата -7 * milisInAnHour.
Технически, это работает, потому что, хотя он вернет объект с TimeZone, равным текущей системной TimeZone, время будет изменено для учета смещения.
Этот код:
String dateString = "Mon, 27 Oct 2008 08:33:29 -0700";
DateFormat df = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss Z");
Date parsed = df.parse(dateString);
System.out.println("parsed date: " + parsed);
Calendar newCalendar = Calendar.getInstance();
newCalendar.setTime(parsed);
выходы:
дата анализа: пн 27 окт. 11:33:29 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2008
что технически правильно, так как мой системный часовой пояс EDT / UTC минус четыре часа (что на три часа впереди вашего). Если вы выражаете время как число миллисекунд с 1 января 1970 года, 00:00:00 по Гринвичу (то есть, как объект Date
хранит свою дату / время), тогда эти дата / время равны, это просто TimeZone, который отличается.
Ваша проблема действительно Как мне преобразовать дату / календарь в свой часовой пояс? Для этого взгляните на мой ответ на предыдущий вопрос Как работать с часовыми поясами календаря с помощью Java?