0

我正在尝试使用下面提到的代码将下面提到的日期转换为 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

4 回答 4

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,这是一个比 JavaDateCalendar. 你会惊讶于使用它来处理日期是多么容易。事实上,Java 8 引入了一个全新的仅基于 JodaTime 的日期时间 API。

于 2013-11-15T06:07:22.437 回答
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);
于 2013-11-15T06:03:29.447 回答
0

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

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

于 2013-11-15T06:07:15.283 回答
0

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

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

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);
}
于 2013-11-15T07:25:17.010 回答