Java でオブジェクトを日付として書式設定できない
Java で、DateFormat.format メソッドを使用して特定のオブジェクトを日付として書式設定しようとすると場合、次の例外が発生する場合があります:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
このエラーは、フォーマットしようとしたオブジェクトが Date インスタンスではない場合に発生します。あなたの場合、「mm/yyyy」パターンで構成された SimpleDateFormat インスタンスを使用して、文字列 (「2012-11-17T00:00:00.000-05:00」) を日付としてフォーマットしようとしています。
解決策
この問題に対処するには、2 つの SimpleDateFormat オブジェクトを使用する必要があります。1 つは入力文字列を Date インスタンスに解析するためのもので、もう 1 つは結果の Date を目的の形式にフォーマットするためのものです。
<code class="java">import java.text.SimpleDateFormat; import java.util.Date; public class DateParser { public static void main(String args[]) { String monthYear = null; // Create input format to parse from "yyy-MM-dd'T'HH:mm:ss.SSSX" SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); // Create output format to format to "MM/yyyy" SimpleDateFormat outputFormat = new SimpleDateFormat("MM/yyyy"); String inputText = "2012-11-17T00:00:00.000-05:00"; try { // Parse the input string into a Date object Date date = inputFormat.parse(inputText); // Format the parsed Date into the desired format monthYear = outputFormat.format(date); System.out.println(monthYear); } catch (ParseException e) { System.err.println("Input string is not a valid date: " + e.getMessage()); } } }</code>
このアプローチでは、解析操作と書式設定操作が分離され、指定されたパターンを使用して書式設定を試行する前に、入力が Date インスタンスに適切に変換されることが保証されます。
以上がJava で「オブジェクトを日付としてフォーマットできません」例外を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。