Получение исключения при преобразовании дат в Java

Я пытаюсь преобразовать указанную ниже дату в 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 ответа

Прежде всего, вы не должны использовать конструктор 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, очень мощному API DateTime, чем Java Date и Calendar. Вы будете удивлены, насколько легко работать с датами. На самом деле Java 8 вводит совершенно новый API datetime, основанный только на JodaTime.


Попробуйте этого приятеля

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


Я не тестировал, но я немного модифицировал код 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);
}


Используйте этот код String date = DateFormat.getDateTimeInstance(2, 2, Locale.US).format(new Date());

Выход будет 15 ноября 2013 года 14:06:00

licensed under cc by-sa 3.0 with attribution.