1. ホーム
  2. java

[解決済み] Java : 与えられたオブジェクトを日付としてフォーマットできない

2022-02-18 10:21:09

質問

このような形式の日付があります (2012-11-17T00:00:00.000-05:00). この日付をmm/yyyy形式に変換する必要があります。

この方法で試しましたが、このようなExceptionが発生します。

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
    at java.text.DateFormat.format(Unknown Source)
    at java.text.Format.format(Unknown Source)
    at DateParser.main(DateParser.java:14)

以下の私のコードをご覧ください。

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateParser {    
  public static void main(String args[]) {   
    String MonthYear = null;    
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm/yyyy");    
    String dateformat = "2012-11-17T00:00:00.000-05:00";
    MonthYear = simpleDateFormat.format(dateformat);    
    System.out.println(MonthYear);    
  }    
}

解決方法は?

DateFormat.format のみで動作します。 Date の値を指定します。

2 つの SimpleDateFormat オブジェクトを使用する必要があります: 1 つはパース用、もう 1 つはフォーマット用です。例えば

// Note, MM is months, not mm
DateFormat outputFormat = new SimpleDateFormat("MM/yyyy", Locale.US);
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.US);

String inputText = "2012-11-17T00:00:00.000-05:00";
Date date = inputFormat.parse(inputText);
String outputText = outputFormat.format(date);

EDIT: フォーマットにタイムゾーンやロケールを指定したい場合は、次のようにします。 また を使用することを検討します。 Jodaタイム これはより優れた日付/時刻APIです。