当前位置: 首页 > 知识库问答 >
问题:

Java:无法将给定对象格式化为日期

武晨
2023-03-14

我有这个格式的日期(2012-11-17T00:00:00.000-05:00)。我需要将日期转换成这种格式MM/YYYY。

我试过这个方法,但我得到了这个例外。

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);    
    }    
}

共有1个答案

陆才俊
2023-03-14

dateformat.format仅适用于date值。

您应该使用两个SimpleDateFormat对象:一个用于解析,一个用于格式化。例如:

// 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);

编辑:注意,您很可能希望在格式中指定时区和/或区域设置,并且您还应该考虑使用Joda time而不是所有这些--这是一个更好的日期/时间API。

 类似资料: