Проблема с часовым поясом в Blackberry

Я работаю над проектом, который требует, чтобы я создал значение даты, установив его в определенный часовой пояс.

Я использовал следующий код

Date formatter1 = new Date(HttpDateParser.parse("2013-08-02 11:00:00"));
System.out.println("Date dd formatter1"+formatter1);

Результат следующий:

Fri Aug 02 16:30:00 Asia/Calcutta 2013

После синтаксического анализа он дает мне время в соответствии с часовым поясом устройства ... автоматически добавляя 5:30, если часовой пояс устройства установлен на Индию, Калькутту.

Я хочу, чтобы результат был таким:

Fri Aug 02 11:00:00 Asia/Calcutta 2013

Я имею в виду, что он не должен добавлять смещение в качестве ссылки на GMT.

Как я мог бы работать над этим кодом, чтобы установить данные, необходимые мне в соответствии с часовым поясом, и не изменять их внутри?


person Yatin    schedule 05.08.2013    source источник


Ответы (1)


Одна проблема заключается в том, что ваша исходная строка даты:

2013-08-02 11:00:00

не включает информацию о часовом поясе. Таким образом, это интерпретируется как время по Гринвичу. Это значит, что в калькуттском времени будет

Fri Aug 02 16:30:00 Asia/Calcutta 2013

Вы хотите указать, что 11:00 уже по калькуттскому времени. Для этого используйте один из форматов, определенных в документации HttpDateParser:

  // we make sure to specify time zone information "+05:30"!
  long timeSinceEpoch = HttpDateParser.parse("2013-08-02T11:00:00+05:30");

  Date date = new Date(timeSinceEpoch);
  System.out.println("Date: " + date);
  
  // use this to slightly change the date formatting ... same time zone
  String pattern = "yyyy-MM-dd hh:mma";
  SimpleDateFormat formatter = new SimpleDateFormat(pattern);
  String formattedDate = formatter.formatLocal(timeSinceEpoch);

  System.out.println("SimpleDateFormat: " + formattedDate);

Примечание: помимо добавления "+5:30" к строке времени необходимо заменить пробел после даты на 'T'.

Этот код выведет:

[0.0] Дата: Пт, 2 августа, 11:00:00 Азия/Калькутта 2013

[0.0] SimpleDateFormat: 02.08.2013, 11:00

если часовой пояс устройства фактически установлен на Калькутту (Калькутта +5,5).

использованная литература

Взгляните на этот ответ на Stack Overflow.
и, возможно, этот тоже.

person Nate    schedule 05.08.2013