Вот что я рекомендую:
DateFormat fromFormat = new SimpleDateFormat("yyyyMMdd");
fromFormat.setLenient(false);
DateFormat toFormat = new SimpleDateFormat("MM/dd");
toFormat.setLenient(false);
String fromDate = "20120316";
Date d = fromFormat.parse(fromDate); // this is a java.util.Date
System.out.println(String.format("date is %s", toFormat.format(d));
Вам не нужно две даты, только одна;вам нужно от до и от форматов.
Это должно быть java.util.Date
.
Если у вас есть коллекция, просто сделайте это:
String [] dateStrings = datesOnce.split(" ");
List<Date> dates = new ArrayList<Date>();
for (String dateString : dateStrings) {
dates.add(fromFormat.parse(dateString));
}
Вы можете отформатировать все эти даты любым способом.
Если это должен быть массив Date, сделайте это следующим образом:
String [] dateStrings = datesOnce.split(" ");
Date [] dates = new Date[dateStrings.length];
int i = 0;
for (String dateString : dateStrings) {
dates[i++] = fromFormat.parse(dateString);
}
Вот полная демонстрация:
package homework;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* DateFormatDemo
* @author Michael
* @link /8248642/kak-preobrazovat-daty-v-formate-string-v-daty-v-formate-datecomment12475521_9796619
* @since 3/20/12 8:55 PM
*/
public class DateFormatDemo {
public static void main(String[] args) {
String input = "20120316 20120317 20120318";
DateFormat fromFormat = new SimpleDateFormat("yyyyMMdd");
fromFormat.setLenient(false);
DateFormat toFormat = new SimpleDateFormat("MM/dd");
toFormat.setLenient(false);
String [] dateStrings = input.split("\\s+");
Date [] dates = new Date[dateStrings.length];
int i = 0;
for (String dateString : dateStrings) {
try {
dates[i++] = fromFormat.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
}
for (Date d : dates) {
System.out.println(toFormat.format(d));
}
}
}