转换日期字符串

时间:2014-11-25 09:34:45

标签: java eclipse

我有一个日期字符串为“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)

3 个答案:

答案 0 :(得分:1)

你需要

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

日期格式字符串必须与您尝试解析的字符串格式相同。您已经指定了25/11/2014 14:41形式的某些内容,而不是25 Nov 2014 14:41

StringBufferString的转换还有一些奇怪的事情:由于某种原因,您最初会在开头有一些额外的空格。我只能假设这是你向我们展示的东西的结果。 (看起来好像你没有完全从你的来源复制和粘贴,因为在最后一行至少有一个错误的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