2016-04-18 15 views
1

April 18 2016 10:41 AMから04/18/2016 10:41までを解析しようとしています。ここに私のコードアンドロイドでの日付形式解析2016年4月18日10:41 AMから04/18/2016 10:41

private String dateFormat(String strCurrentDate) throws ParseException { 

     SimpleDateFormat format = new SimpleDateFormat("mmmm dd yyyy hh:mm Z"); 
     Date newDate = null; 
     newDate = format.parse(strCurrentDate); 
     format = new SimpleDateFormat("MM/dd/yyyy hh:mm"); 
     String date = format.format(newDate); 
     Log.d("DATE_FORMATE_TESTING", date); 
     return date; 

    } 

がある。しかし、それは次のエラーに

04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err: java.text.ParseException: Unparseable date: "April 18 2016 01:41 PM" (at offset 0) 
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:  at java.text.DateFormat.parse(DateFormat.java:579) 
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:  at gps.clock.com.MainActivity.dateFormat(MainActivity.java:441) 
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:  at gps.clock.com.MainActivity.access$500(MainActivity.java:70) 
04-18 10:41:43.834 7526-7526/gps.clock.com W/System.err:  at gps.clock.com.MainActivity$1$4.onClick(MainActivity.java:303) 

を与える誰もが、私はそれを修正する方法を教えてもらえますか?なぜそれがUnparseable dateを表示しているのですか?どのように私はそれを解析する必要がありますか? ありがとうございます。

+0

を試してみてください、あなたはマシュマロを使用していますか? –

+1

最初のパターンの月の小文字は 'm 'です。大文字にする必要があります。そして、am/pmの文字は 'Z'ではなく' a'です。 ['SimpleDateFormat' docs](http://developer.android.com/reference/java/text/SimpleDateFormat.html) –

+3

[日付フォーマットへの不正な文字列の変換]の可能な複製(http:// stackoverflow .com/questions/13698165/date-format-stringへの不正な変換) –

答えて

3

は、次のコード

String strCurrentDate = "April 18 2016 10:41 AM"; 
    SimpleDateFormat format = new SimpleDateFormat("MMM dd yyyy hh:mm a"); 
    Date newDate = null; 
    try { 
     newDate = format.parse(strCurrentDate); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    format = new SimpleDateFormat("MM/dd/yyyy hh:mm"); 
    String date = format.format(newDate); 
    System.out.print(date); 
+0

はいこれは私のために働いた。私はこの答えを受け入れるだろう。 SimpleDateFormate( "MMM dd yyyy hh:mm a")にあるaとZの違いは何ですか? – anuradha

+0

'a'はAMまたはPMを表すために使用され、 'Z'(ズールー時間)はTimeZoneを表すため、解析できませんでした。 – user1799171

1

元のフォーマット文字列を調整する必要があると思います。

SimpleDateFormat format = new SimpleDateFormat("mmmm dd yyyy hh:mm Z");

mM両方のフォーマットJavaの日付で

SimpleDateFormat format = new SimpleDateFormat("MMMM dd yyyy hh:mm a");

0

であるべき異なる意味を持っています。 mは、を構文解析するために使用され、Mは、を解析するために使用されます。

あなたの例では、小文字のmで月を解析しているため、エラーが発生します。 @Mike M.の示唆通り、mを大文字に変更してください。

関連する問題