java.text.ParseException:Unparseable date:" 2014-06-04" (抵消5)

时间:2014-06-04 06:45:47

标签: java android android-date

我想将日期解析为所需格式,但每次都会收到例外情况。 我知道这很容易实现,但我面临一些问题,我不知道究竟在哪里。:

Exception: java.text.ParseException: Unparseable date: "2014-06-04" (at offset 5)

以下是我的代码:

private String getconvertdate(String date) {
    DateFormat inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
    inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
    Date parsed = null;
    try {
        parsed = inputFormat.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String outputText = outputFormat.format(parsed);
    return outputText;
}

输入方法:2014-06-04

预期产出:2014年6月6日

我已经关注了一些Ref。来自Stackoverflow.com,但他仍然存在问题。 请帮助。

4 个答案:

答案 0 :(得分:17)

你没有时间参与你的字符串: 而月份只有两个字符 替换

new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);

new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);

答案 1 :(得分:7)

// Try this way,hope this will help you to solve your problem....

public String convertDateStringFormat(String strDate, String fromFormat, String toFormat){
       try{
          SimpleDateFormat sdf = new SimpleDateFormat(fromFormat);
          sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
          SimpleDateFormat dateFormat2 = new SimpleDateFormat(toFormat.trim());
          return dateFormat2.format(sdf.parse(strDate));
       }catch (Exception e) {
          e.printStackTrace();
          return "";
       }
}

答案 2 :(得分:3)

也许您需要处理不同的输入格式 然后捕获当前非托管格式异常(只是一个示例):

private String getconvertdate(String date) {
    System.out.println(date.length());
    DateFormat inputFormat = null;
            if(date.length() == 20)
                inputFormat = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss",Locale.ENGLISH);
    if(date.length() == 10)
        inputFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH) ;

    if(null == inputFormat)
        return "Format invalid";

    inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    DateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy",Locale.ENGLISH);
    Date parsed = null;
    try {
        parsed = inputFormat.parse(date);
    } catch (ParseException e) {
        return "Input Date invalid";
    }
    String outputText = outputFormat.format(parsed);
    return outputText;
}

答案 3 :(得分:0)

就我而言,我正在使用::

SimpleDateFormat todaySdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);

将其更改为

SimpleDateFormat todaySdf = new SimpleDateFormat("dd MM yyyy", Locale.ENGLISH);

它起作用..额外的M是罪魁祸首!!