Я пробовал это около часа, но, похоже, он не работает должным образом.
Я в основном читаю строку даты из базы данных, она в формате yyyy-MM-dd ЧЧ: мм: сс (2012-03-01 14:32:00).
На данный момент у меня есть только строка, без информации о часовом поясе.Это время создается на нашем сервере и, в конце концов, попадает в базу данных устройства, я точно знаю, что это восточное стандартное время.
Итак, я в основном попробовал следующий код:
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sourceFormat.setTimeZone(TimeZone.getTimeZone("EST"));
Date parsed = sourceFormat.parse("2012-03-01 10:18:14");
TimeZone tz = TimeZone.getDefault();
SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
destFormat.setTimeZone(tz);
String result = destFormat.format(parsed);
Log.v("TZ", result);
Мой эмулятор EST, поэтому, когда я регистрирую время, оно показывает 2012-03-01 10:18:14, что правильно.
Но если я изменю часовой пояс sourceFormat, чтобы сказать, что Америка / Лос-Анджелес, я получаювыход 2012-03-01 05: 18: 14.
Сейчас я не эксперт, но я уверен, что Лос-Анджелес на 3 часа отстает от Монреаля (EST, где находится наш офис).Поэтому, если я возьму время 2012-03-01 10:18:14 и назову его временем в Америке / Лос-Анджелесе, то конвертирую его в EST. Я ожидаю увидеть 2012-03-01 13: 18: 14.
Что происходит?
Любая помощь будет оценена.
Большое спасибо.