【发布时间】:2020-11-10 14:20:49
【问题描述】:
我必须编写一个函数来接受不同格式字符串的日期列表,并返回相同格式的 Stringdates 列表。我尝试了以下代码,但有些日期无法解析。请帮助我获得正确的输出。
public static void main(String[] args) {
List<String> dateList = new ArrayList<>();
dateList.add("2010/03/30");
dateList.add("15/12/2016");
dateList.add("11-15-2012");
dateList.add("20130720");
changeDates(dateList);
}
public static List<String> changeDates(List<String> dates){
List<String> returnedData = new ArrayList<>();
dates.forEach(parsedDate ->{
try {
Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(parsedDate);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String yyyyMMdd = sdf.format(date1);
System.out.println(yyyyMMdd);
} catch (ParseException e) {
e.printStackTrace();
}
});
return returnedData;
}
输出应该是这样的["20100330","15122016","11152012","20130720"]
谢谢,
【问题讨论】:
-
解析前检查输入格式
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。 -
你想如何解释“10-11-2020”?作为“MM-dd-yyyy”还是“dd-MM-yyyy”?