2014-11-25 2 views
-1

У меня есть строка даты, как «25 Nov 2014 10:30» и я хочу, чтобы преобразовать его в качестве «Tue Nov 25 10:30:00 IST 2014»Преобразовать Дата Строка

SimpleDateFormat pendingmesstime2=new SimpleDateFormat("dd/MM/yyyy HH:mm");   
Date pendingmessd2; 
StringBuffer pendingmesstime="25 Nov 2014 14:41"; 
pendingmessd2=pendingmesstime2.parse(pendingmesstim); 

Он дает ParseException.Unparsable Дата "25 ноября 2014 14:41"

Logcat является:

11-25 14:54:25.919: D/pendingmesstime is(21177): 25 Nov 2014 14:41 
11-25 14:54:25.919: W/System.err(21177): java.text.ParseException: Unparseable date: " 25 Nov 2014 14:41" (at offset 2) 
11-25 14:54:25.939: W/System.err(21177): at   java.text.DateFormat.parse(DateFormat.java:626) 
11-25 14:54:25.939: W/System.err(21177): at com.example.gate_keeper.PendingMessageFragment$1.onItemClick(PendingMessageFragment.java:184) 
11-25 14:54:25.939: W/System.err(21177): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 
11-25 14:54:25.939: W/System.err(21177): at android.widget.AbsListView.performItemClick(AbsListView.java:1394) 
11-25 14:54:25.939: W/System.err(21177): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3024) 
11-25 14:54:25.939: W/System.err(21177): at android.widget.AbsListView$1.run(AbsListView.java:3830) 
11-25 14:54:25.939: W/System.err(21177): at android.os.Handler.handleCallback(Handler.java:605) 
11-25 14:54:25.939: W/System.err(21177): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-25 14:54:25.939: W/System.err(21177): at android.os.Looper.loop(Looper.java:137) 
11-25 14:54:25.939: W/System.err(21177): at android.app.ActivityThread.main(ActivityThread.java:4517) 
11-25 14:54:25.939: W/System.err(21177): at java.lang.reflect.Method.invokeNative(Native Method) 
11-25 14:54:25.939: W/System.err(21177): at java.lang.reflect.Method.invoke(Method.java:511) 
11-25 14:54:25.939: W/System.err(21177): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
11-25 14:54:25.939: W/System.err(21177): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
11-25 14:54:25.939: W/System.err(21177): at dalvik.system.NativeStart.main(Native Method) 
+1

Ответ на вопрос. Посмотрите на строку, которую вы пытаетесь проанализировать в трассировке стека. Разве вы не видите ведущих белых пространств? Разве вы не видите, что это совсем не совпадает с шаблоном, который вы используете? В шаблоне есть косые черты. И в строке нет ни одного синтаксического анализа. –

+0

Почему вы помещаете косые черты во входном формате, когда их нет? – theGreenCabbage

+0

Да приятель ... thanx .... :-) –

ответ

1

Вам нужно

SimpleDateFormat pendingmesstime2=new SimpleDateFormat("dd MMM yyyy HH:mm"); 

Строка формата даты должна быть в том же формате, что и строка, которую вы пытаетесь проанализировать. Вы указали что-то вроде формы 25/11/2014 14:41, а не 25 Nov 2014 14:41.

Существует также что-то странное с преобразованием с StringBuffer в String: по какой-то причине вы заканчиваете с несколькими дополнительными пробелами. Я могу только предположить, что это результат чего-то, чего вы нам не показали. (Похоже, что вы не скопировали и не вставили именно из своего источника, потому что в последней строке есть как минимум опечатка с именем переменной .)

0

Вы должны указать формат ввода и вывода даты. Попробуйте этот код:

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

public class DateConverter 
{ 
    public static void main(String[] args) 
    { 
    DateConverter converter = new DateConverter(); 
    String outputDate = converter.convertDate("25 Nov 2014 14:41"); 
    System.out.println(outputDate); 
    } 

    DateConverter() {} 

    public String convertDate(String inputDate) 
    { 
    try 
    { 
     Date date = new SimpleDateFormat("dd MMM yyyy HH:mm").parse(inputDate); 
     return new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date); 
    } 
    catch(ParseException e) 
    { 
     e.printStackTrace(); 
     return "Could not parse date"; 
    } 
    } 
} 
0

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

25 Nov 2014 14:41 
dd MMM yyyy HH:mm 
Смежные вопросы