web-dev-qa-db-ja.com

java.text.ParseException:解析不可能な日付: "2014-06-04"(オフセット5)

日付を目的の形式に解析したいのですが、毎回例外が発生します。実装は簡単ですが、正確な場所がわからないという問題に直面しています。

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日

私はいくつかの参考文献に従いました。 Stackoverflow.comからですが、それでも問題は解決しません。助けてください。

10
Anchit Mittal

文字列に時間の部分がありません。月には2文字の置換しかありません。

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

new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
17
Jens
// 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 "";
       }
}
7
Haresh Chhelana

おそらく、さまざまな入力形式に取り組む必要があります。次に、現在管理されていない形式の例外をキャッチします(サンプルのみ)。

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
Abs

私の場合、::を使用していました

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

に変更しました

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

そしてそれはうまくいきました..余分なMが犯人でした!!

0
AndroidGuy