Преобразование Blackberry Java String в дату

Я использовал следующий код для преобразования строки в дату, но он применяет часовой пояс устройства во время преобразования.
Мне это не нужно, но я хочу ту же дату/время из этой строки, например

String = "2009-07-31 07:59:17.427"
Date = 2009-07-31 07:59:17.427

Date formatter = new Date(HttpDateParser.parse("2009-07-31 07:59:17.427"));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String strCustomDateTime = dateFormat.format(formatter);

person Neo    schedule 31.07.2009    source источник


Ответы (2)


Вы можете принять во внимание смещение часового пояса по умолчанию до даты, которую вы получите после синтаксического анализа:

public static String StringToDate(String dateToParse) {

    Date formatter = new Date(HttpDateParser.parse(dateToParse));
    SimpleDateFormat dateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss.SSS");
    int offset = TimeZone.getDefault().getRawOffset();
    formatter.setTime(formatter.getTime() + offset);
    String strCustomDateTime = dateFormat.format(formatter);
    return strCustomDateTime;
}
person Maksym Gontar    schedule 31.07.2009

В чем проблема? Вы пытаетесь преобразовать "2009-07-31 07:59:17.427" в момент времени, но это не указывает уникальный момент времени - без часового пояса. Таким образом, вам нужен часовой пояс, и библиотека должна выбрать его, текущий часовой пояс платформы.

Если проблема в том, что вы хотите указать другой часовой пояс, вызовите DateFormat.setTimeZone():

format.setTimeZone(TimeZone.getTimeZone("your time zone"));
person Sean Owen    schedule 31.07.2009
comment
Я получаю сообщение об ошибке для метода setTimeZone в Blackberry. Я просто хочу получить представление даты, которое является строковым форматом для формата даты как есть. - person Neo; 31.07.2009