如何在Java8中格式化日期?
我必须编写一个函数来接受不同格式字符串中的日期列表,并返回相同格式的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”]
谢谢
# 1 楼答案
您无法神奇地自动读取所有可能的日期格式。你必须选择一些你支持的格式
当您选择了一组要支持的格式后,您可以在每个日期尝试每种格式。当您找到一个在输入上没有失败的解析器时,您将使用该解析器。 不过要小心。例如,您可能会遇到这样一种情况:将一个月的某一天解析为一个月(例如,理论上,01-02-2020可以解释为2020年2月1日和1月2日)
我认为以下代码适用于Java9及以上版本。注意,我使用的是java。时间库,而不是旧的
java.util.Date