69

私はこれを試しました:

DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy");
Date d = fmt.parse("June 27, 2007");

エラー:

Exception in thread "main" java.text.ParseException: Unparseable date: "June 27, 2007"

Javaのドキュメントによると、完全なフォームに一致させるには4文字を使用する必要があります。MMMは、 「6月」のように短縮された月でしか使用できませんが、完全な形式に一致させる必要があります。

テキスト:フォーマットの場合、パターン文字の数が4以上の場合、完全な形式が使用されます。それ以外の場合は、可能な場合は短縮形または省略形が使用されます。構文解析では、パターン文字の数に関係なく、両方の形式が受け入れられます。

https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

4

4 に答える 4

150

月の名前が「1月」、「2月」などではなく、ローカル言語の他の単語であるロケールを使用している可能性があります。

使用するロケールを指定してみてください。次に例を示しLocale.USます。

DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy", Locale.US);
Date d = fmt.parse("June 27,  2007");

また、日付文字列に余分なスペースがありますが、実際にはこれは結果に影響しません。どちらの方法でも機能します。

于 2010-02-08T01:43:26.463 に答える
-3
val currentTime = Calendar.getInstance().time
SimpleDateFormat("MMMM", Locale.getDefault()).format(date.time)
于 2020-01-13T15:24:18.090 に答える