2014-11-25 288 views
-1

我有一個日期字符串爲「2014年11月25日10:30」,我想它轉換爲「星期二11月25日10:30:00北京時間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日期 「2014 11月25日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

答案在問題中。看看你想要在堆棧跟蹤中解析的字符串。你沒看到領先的白色空間嗎?你沒有看到它與你使用的圖案完全不符?模式中有斜槓。並且沒有任何字符串需要解析。 – 2014-11-25 09:37:28

+0

爲什麼在沒有輸入格式時會插入斜槓? – theGreenCabbage 2014-11-25 09:43:37

+0

是的,好友...... thanx .... :-) – 2014-11-25 09:44:38

回答

1

你需要

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

日期格式字符串必須與您嘗試解析的字符串格式相同。您已指定25/11/2014 14:41的格式,而不是25 Nov 2014 14:41

StringBufferString的轉換還有一些不可思議的事情:由於某種原因,開始時會出現一些額外的空格。我只能假設這是你沒有向我們展示過的東西的結果。 (它看起來好像沒有完全複製並粘貼到源代碼中,因爲最後一行至少有一個pendingmesstime變量名的拼寫錯誤。)

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