2013-10-10 8 views
1

Как разобрать следующую строку даты в действительной дате java? У меня проблемы с разбором часового пояса.Проблема разбора часового пояса в Java

"2013-10-10 10:43:44 GMT + 5"

Я использую следующий метод для разбора даты. Он хорошо работает, когда временная зона, как «GMT + 05: 00», но не в состоянии разобрать строку выше, даже если я использую различные комбинации Z, Z, X

public static Date convertStringWithTimezoneToDate(String dateString) { 
     if (dateString == null) { 
      return null; 
     } 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzz"); 
     Date convertedDate = null; 
     try { 
      convertedDate = dateFormat.parse(dateString); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return convertedDate; 
    } 
+2

попробуйте конвертировать GMT + 5 ==> GMT + 5: 00. Это недопустимый формат в соответствии с этим http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#timezone – Reddy

+0

прочитайте это [ответ] [1] может быть это будет полезен для вас [1]: http://stackoverflow.com/questions/4496359/how-to-parse-date-string-to-date – Engineer

+0

см. [этот] (http: // stackoverflow. com/questions/8035125/java-how-to-add-seconds-to-timestamp) –

ответ

0

Ваш формат дата не является стандартным. Часовой пояс должен соблюдать синтаксис, приведенный в documentation:

GMTOffsetTimeZone: 
     GMT Sign Hours : Minutes 
Sign: one of 
     + - 
Hours: 
     Digit 
     Digit Digit 
Minutes: 
     Digit Digit 
Digit: one of 
     0 1 2 3 4 5 6 7 8 9 

Этого код преобразование вашего формата в стандартную и построить объект даты Java.

public static Date convertStringWithTimezoneToDate(String dateString) { 
    if (dateString == null) { 
     return null; 
    } 
    dateString += ":00"; 
    System.out.println(dateString); 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
    Date convertedDate = null; 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return convertedDate; 
} 

P.S .: Только один z необходимо в строке шаблона.

Смежные вопросы