0

如何将 11/03/2009-20:06:16 转换为 Date 对象,以便我可以比较两个日期。我不断收到 java.lang.IllegalArgumentException: Cannot format given Object as a Date 错误,如果我使用下面的实现。我需要输出格式为 Tue Jul 14 01:32:31 2009 的日期对象

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

public class Dateaf {

    /**
     * @param args
     * @throws ParseException
     */
    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub

        String text = "11/03/2009-20:06:16";

        SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy-hh:mm:ss");

        Date date = dateParser.parse(text);
        System.out.println(date);

    }

}
4

3 回答 3

3

sdf.format()接受一个Date对象并返回一个String. 你正在传递一个String给它。

于 2013-04-14T21:50:12.590 回答
2

您非常接近,只需拨打以下电话format

Date date = sdf.parse(text);

所以:

String text = "11-03-2009 20:06:16";

SimpleDateFormat dateParser = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
                                                             //^^ capital H for 24 hour  

Date date = dateParser.parse(text);

并打印(来自您的评论,格式为“Tue Jul 14 01:32:31 2009”):

SimpleDateFormat dateFormatter = new SimpleDateFormat("EE MM dd HH:mm:ss yyyy");

System.out.println(dateFormatter.format(date));

SimpleDateFormatjavadoc是一个很好的格式参考。

编辑

在 OP 的编辑后,这里是一个完整的例子

public static void main(String[] args) throws ParseException {
    final String text = "11/03/2009-20:06:16";
    final SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
    final Date date = dateParser.parse(text);
    final SimpleDateFormat dateFormatter = new SimpleDateFormat("EE MMM dd HH:mm:ss yyyy");
    System.out.println(dateFormatter.format(date));
}

输出:

Tue Nov 03 20:06:16 2009
于 2013-04-14T21:54:22.290 回答
-1

Java 有一个文本包,它为我们提供了预定义的类文本

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

public class Main {
public static void main(String[] args) throws Exception{
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

Date today = df.parse("20/12/2005");
System.out.println("Today = " + df.format(today));
}
}

还有另一种方法可以做到这一点

String date = "2000-11-01";
java.sql.Date javaSqlDate = java.sql.Date.valueOf(date);
于 2013-04-14T21:52:45.160 回答