在Java中转换日期时获取异常

时间:2013-11-15 06:00:16

标签: java date exception

我试图通过使用下面提到的代码将下面提到的日期转换为yyyMMdd。

String dateString = "1st August 2012";
SimpleDateFormat simp_date=new SimpleDateFormat("yyyyMMdd");
    try
    {
        dateString=simp_date.format(new Date(dateString));
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

我正处于失败之中。

抛出:IllegalArgumentException

有人可以帮帮我吗?提前谢谢。

4 个答案:

答案 0 :(得分:3)

首先,您不应该使用构造函数Date(String),因为它已被弃用。这里需要的是首先使用格式解析日期字符串以将其转换为Date对象,然后将Date对象格式化为所需格式。

以下代码可行:

String dateString = "1st August 2012";

// Format for parsing the dateString
SimpleDateFormat parser = new SimpleDateFormat("d'st' MMM yyyy");

// To format the resultant Date object to new String format
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");

try {
    dateString = formatter.format(parser.parse(dateString));

} catch(Exception e) {
    e.printStackTrace();
}

System.out.println(dateString);

我建议你转向JodaTime,这是一个比Java DateCalendar强大的DateTime API。你会惊讶地发现使用日期是多么容易。实际上,Java 8仅引入了基于JodaTime的全新datetime API。

答案 1 :(得分:1)

试试这个好友

java.util.Date  ss1=new Date("Sat Dec 01 00:00:00 GMT 2012");
SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd");
String formats1 = formatter5.format(ss1);
System.out.println(formats1);

答案 2 :(得分:0)

使用此代码 String date = DateFormat.getDateTimeInstance(2, 2, Locale.US).format(new Date());

输出将于2013年11月15日下午2:06:00

答案 3 :(得分:0)

我没有测试,但我很少修改 ROHIT的代码:

您可以测试以下代码吗? PLS ...

public static void main(String[] args) {
    String[] s1 = {"st", "nd", "rd", "th"};
    String dateString = "1st August 2012";
    for (Object obj : s1) {
        SimpleDateFormat parser = new SimpleDateFormat("d'" + obj + "' MMM yyyy");
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        try {
            dateString = formatter.format(parser.parse(dateString));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    System.out.println("Expected OutPut:::" + dateString);
}