код для преобразования GMT в часовой пояс устройства не работает

1

У меня есть ввод времени в следующем формате из RSS-канала:

Ср 13 июн 17:05:44 +0000 2012

и мне нужен вывод как Wed Jun 13, 2012 22:35:44

Исходное время будет всегда в GMT, а требуемое время выхода будет в часовом поясе устройства (это может быть GMT + 5: 30 или GMT-2: 00 или любое).

Итак, во-первых, у меня есть экземпляр календаря с GMT, как показано ниже.

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

Затем изменили календарь, как показано на рисунке, используя StringTokenizer во время ввода.

calendar.set(Calendar.DAY_OF_MONTH, date);
calendar.set(Calendar.MONTH, month);
.
.
etc.

Затем у меня есть следующий код:

calendar.setTimeZone(TimeZone.getDefault());

В основном вышеуказанный код изменяет календарь на часовой пояс устройства. Теперь дело в том, что приведенный выше код работает нормально в обычной среде, но не работает в Android. Любое решение? Пожалуйста помоги.

  • 0
    Просто любопытно - какой часовой пояс 5 часов 30 минут от GMT?
  • 0
    Введенный часовой пояс GMT. Время вывода зависит от пользователя. Если пользователь в Индии, тогда его GMT + 5: 30, если в Пакистане, то GMT + 5: 00 и так далее. пожалуйста, проверьте код "calendar.setTimeZone (TimeZone.getDefault ());" который работает как обычный проект Java, но не как Android
Теги:
timezone
calendar

2 ответа

2
Лучший ответ

Сначала вам понадобилось DateFormat для анализа строкового значения в объекте Date, а затем вы можете установить Timezone в Date, а также вы можете сделать объект Calendar с помощью Date, что объект календаря будет вашим экземпляром часового пояса вашего устройства.

Ниже код работает на моей стороне

    String input_format = "EEE MMMMM dd HH:mm:ss Z yyyy";
    String input_value="Wed Jun 13 17:05:44 +0000 2012";
    Date date=null;

    SimpleDateFormat sdf = new SimpleDateFormat(input_format);
    try {
        date = sdf.parse(input_value);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    Calendar calendar = sdf.getCalendar();
    calendar.setTime(date);
  • 1
    Да .. он работает и работает отлично. Не только в IST (GMT + 5: 30), но во всех часовых поясах. Спасибо..
  • 0
    пожалуйста, дас
Показать ещё 1 комментарий
-1

если я понимаю это правильно, вы просто хотите установить timezome

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setTimeZone("Europe/Paris");

это, например, установить часовой пояс в Париж

  • 0
    Спасибо друг, здесь вы использовали "Европа / Париж" как новый часовой пояс. Но в моем приложении я не знаю о часовом поясе пользователей. т.е. время вывода может варьироваться в зависимости от разных пользователей.
  • 0
    хорошо, я понял, я не уверен, но, возможно, эта ссылка может помочь вам developer.android.com/reference/java/util/TimeZone.html
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню