2016-05-03 4 views
1

Я пытаюсь разобрать временную метку с строкой времени в Java. Мои строки:Получение исключительного исключения даты при преобразовании строки timestamp

"2013-01-01 15:30:00.2 +05:00" 
"2003-01-01 02:59:04.123 -8:00" 

Это мой код, чтобы разобрать его:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z"); 
simpleDateFormat.parse("2013-01-01 15:30:00.2 +05:00"); 

Однако я получаю сообщение об ошибке, когда я запускаю код:

java.text.ParseException: Unparseable date: "2013-01-01 15:30:00.2 +05:00" 

Я также попробовал использовать следующий код для его анализа:

DateTimeFormatter dateTimeFormatter = ISODateTimeFormat.dateTimeNoMillis(); 
DateTime dateTime = dateTimeFormatter.parseDateTime("2003-01-01 02:59:04.123 -8:00"); 
Timestamp timeStamp = new Timestamp(dateTime.getMillis()); 

Это дает мне исключение:

Invalid format: "2003-01-01 02:59:04.123 -8:00" is malformed at " 02:59:04.123 -8:00" 

Я также попытался вставить «T» в строке после даты, но он также дал неверный формат исключения:

Invalid format: "2003-01-01T02:59:04.123 -8:00" is malformed at " .123 -8:00" 

Это должно быть очень просто - я не Не знаю, где я ошибаюсь.

Спасибо за помощь!

+0

это может помочь. http://stackoverflow.com/questions/4542679/java-time-zone-when-parsing-dateformat –

+2

Обратите внимание на «no millis» часть 'ISODateTimeFormat.dateTimeNoMillis' - а затем посмотрите на значение, которое вы пытаетесь проанализировать , –

+1

Я предполагаю, что код 'DateTimeFormatter' - это время Joda, а не Java 8? Было бы полезно, если бы вы указали это в своем посте. –

ответ

0

Вы просто сделать ошибку в SimpleDateFormat (гггг-мм-дд чч: мм: СС.ссс г), Где «г» принимает TimeZone с General часового пояса presentation.General часовой пояс принимает:

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 

Но вы упомянули +5: 00, который должен быть GMT + 5: 00.

Есть также для представления TimeZone 'Z' и 'X' в SimpleDateFormat, который принимает RFC 822 time zone и ISO 8601 time zone соответственно.

0

Попробуйте следующий код: Просто положи GMT + 5: 30 вместо +5: 30

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateDemo { 

    // main method 
    public static void main(String[] args) { 

     try { 
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z"); 
      Date d = simpleDateFormat.parse("2013-01-01 15:30:00.2 GMT+05:00"); 
      System.out.println(d); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

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

  • Нет связанных вопросов^_^