我有一个日期字符串为“2014年11月25日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日期“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)
答案 0 :(得分:1)
你需要
SimpleDateFormat pendingmesstime2=new SimpleDateFormat("dd MMM yyyy HH:mm");
日期格式字符串必须与您尝试解析的字符串格式相同。您已经指定了25/11/2014 14:41
形式的某些内容,而不是25 Nov 2014 14:41
。
从StringBuffer
到String
的转换还有一些奇怪的事情:由于某种原因,您最初会在开头有一些额外的空格。我只能假设这是你向我们展示的东西的结果。 (看起来好像你没有完全从你的来源复制和粘贴,因为在最后一行至少有一个错误的pendingmesstime
变量名称。)
答案 1 :(得分: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";
}
}
}
答案 2 :(得分:0)
您正在从字符串创建Date变量。您的格式是将字符串识别为作为日期。您输入的输出格式为输入格式。改变它,它会工作正常。您的格式应为:
25 Nov 2014 14:41
dd MMM yyyy HH:mm