2013-02-26 5 views
1

Я хочу преобразовать эту строку в следующий формат даты.преобразовать строку в формат даты в java

String s = "2-26-2013"; 
    Date date = new SimpleDateFormat("EEEE, MMMM/dd/yyyy").parse(s); 
    System.out.println(date); 

Я получаю эту ошибку:

Exception in thread "main" java.text.ParseException: Unparseable date: "2-26-2013" 
    at java.text.DateFormat.parse(DateFormat.java:357) 

ответ

5

Ну да. Аргумент, который вы передаете в конструктор SimpleDateFormat, указывает формат, в котором вы ожидаете, что дата будет находиться.

"EEEE, MMMM/dd/yyyy" будет действителен для ввода «вторник, февраль/26/2013». Не совсем немного действует для "2-26-2013". Вы понимаете, что вы синтаксический анализ текста на данный момент, а не его форматирование?

Похоже, вам нужна строка формата «M-dd-yyyy» или, возможно, «M-d-yyyy».

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

SimpleDateFormat parser = new SimpleDateFormat("M-dd-yyyy"); 
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMMM/dd/yyyy"); 
Date date = parser.parse(input); 
String output = formatter.format(date); 
+0

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

+0

Что значит «вернуть их в год»? Вы имеете в виду извлечение годной части даты? – NickJ

+0

@MuhsinaM: Что вы подразумеваете под «получить их по годам»? Что это имеет отношение к форматированию в виде текста? –

0
Date date = new SimpleDateFormat("MM-dd-yyyy").parse(s); 

Аргумент к SimpleDateFormat определяет формат вашей даты. Вышеуказанная строка соответствует вашему формату и работает. Ваш пример не соответствует.

0

Вместо использования MMMM/dd/yyyy необходимо использовать MM-dd-yyyy. SimpleDateFormat ожидает, что шаблон соответствует тому, что его пытается разобрать.