java.lang.IllegalArgumentException:无法将给定的Object格式化为Date

时间:2014-12-09 09:20:20

标签: java

我以这种格式记录了一个日期

2014-12-09 02:18:38

我需要将其转换为

09-12-2014 02:18:38

我尝试过这种方式转换

import java.text.ParseException;
import java.text.SimpleDateFormat;
public class TestDate {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-YYYY HH:mm:ss");
        String input = "2014-12-09 02:18:38";
        String strDate = sdf.format(input);
        System.out.println(strDate);
    }
}

但是我在运行期间得到了这个异常

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
    at java.text.DateFormat.format(DateFormat.java:301)
    at java.text.Format.format(Format.java:157)
    at TestDate.main(TestDate.java:15)

有人可以帮我解决这个问题。

4 个答案:

答案 0 :(得分:8)

试试这个

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    SimpleDateFormat sdfOut = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
    String input = "2014-12-09 02:18:38";
    Date date = sdfIn.parse(input);

    System.out.println(sdfOut.format(date));
}

另请注意,m是分钟,而M是几个月。

答案 1 :(得分:3)

而不是

String strDate = sdf.format(input);

使用

String strDate = sdf.parse(input);

另见question

答案 2 :(得分:0)

    SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-YYYY HH:mm:ss");

    // String to Date:
    String input = "2014-12-09 02:18:38";
    Date date = sdf.parse(input);

    // Date to String:
    String strDate = sdf.format(date);
    System.out.println(strDate);

答案 3 :(得分:0)

SimpleDateFormat in可用于格式化Date对象。

首先,您必须使用您声明的SimpleDateFormat上的格式将字符串解析为Data对象。 之后,您可以使用第二个SimpleDataFromat将其输出到您想要的字符串。

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String input = "2014-12-09 02:18:38";
    Date dt = sdf.parse(input);

    SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");        
    String strDate = sdf2.format(dt);
    System.out.println(strDate);