2017-02-17 12 views
1

Я разрабатываю образец Java, в котором дата находится в строке типа - 2016-07-19T16: 54: 03.000 + 05: 30. Я хочу преобразовать его в объект DateTime.Как я могу сделать это в java? Я попробовал этот код -GET DateTime from String

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS+Z").parseDateTime("2016-07-19T16:54:03.000+05:30") 

Это даст java.lang.IllegalArgumentException: Неверный формат: "2016-07-19T16: 54: 03,000 + 05: 30" неправильный формат на "5:30" исключение.

+1

И что вы пробовали? –

+1

google "java string to date"? : D – xander

+0

@ shash678 дает исключение - java.lang.IllegalArgumentException: Незаконный компонент шаблона: X –

ответ

1

Вам необходимо использовать ZZ, а не просто Z для информации о часовом поясе.

т.е.

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").parseDateTime("2016-07-19T16:54:03.000+05:30") 

Взятые из Javadoc:

Количество букв образца определяют формат.

Зона: 'Z' выдает смещение без двоеточия, 'ZZ' выводит смещение с двоеточием, 'ZZZ' или более выдает идентификатор зоны.

+0

java.lang.IllegalArgumentException: Недопустимый формат: «2016-07-19T16: 54: 03.000 + 05: 30» неверно сформирован в исключении «05:30» –

+1

@paritaporwal, извините, в шаблоне была опечатка «+», Символа не должно быть. Строка должна быть DateTimeFormat.forPattern ("yyyy-MM-dd'T'HH: mm: ss.SSSZZ"). ParseDateTime ("2016-07-19T16: 54: 03.000 + 05: 30"). Измените ответ, чтобы отразить это изменение. – DB5

+0

Спасибо большое ... это работает ...... –

0

Вы можете попробовать java.text.DateFormat

String DEFAULT_DATE_PARSE_PATTERN="dd.MM.yyyy"; 
DateFormat format = new SimpleDateFormat(DEFAULT_DATE_PARSE_PATTERN); 
Date result = format.parse(your_value); 
+0

Он обрабатывает только дату: - Вт 19 июля 00:00:00 IST 2016. Я также хочу проанализировать время ..... –

1

Вы можете использовать SimpleDateFormat:

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

class Main { 
    public static void main(String[] args) { 
    try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); 
     Date parsed = format.parse("2016-07-19T16:54:03.000+05:30"); 
     System.out.println(parsed); 
    } catch (ParseException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

Выход:

Tue Jul 19 11:54:03 UTC 2016 

Попробуйте here!

+0

Это меняет свое время с 16:54:03 до 11:54:03 UTC. которого я не хочу. Мне нужно время, как есть. –

+1

, тогда вам нужно отформатировать его с помощью часового пояса и всего, что вы хотите, я думаю, это был просто пример того, как его анализировать, а не форматировать его для вывода. так как вы не сказали, с чем вы мучаетесь с датой. – xander

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

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