我的传入数据将具有字符串中的日期,我应该将其格式化为以下格式"dd/MM/yyyy"。我能够通过以下方式将日期转换为正确的格式:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); //New Format
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd"); //old format
String dateInString = "2013/10/07" //string might be in different format
try{
Date date = sdf2.parse(dateInString);
System.out.println(sdf.format(date));
}
catch (ParseException e){
e.printStackTrace();
}
但是,我有不同格式的字符串,例如 2013/10/07、07/10/2013、10/07/2013、7 Jul 13。在单独格式化之前如何比较它们?
在解析非常相似之前,我发现了这种检查日期格式,但我无法理解它。
谢谢。
我会创建一个实用程序类,其中包含所有受支持格式的列表以及尝试将给定String
对象转换为Date
的方法。
public class DateUtil {
private static List<SimpleDateFormat> dateFormats;
static {
dateFormats = new ArrayList<SimpleDateFormat>();
dateFormats.add(new SimpleDateFormat("yyyy/MM/dd"));
dateFormats.add(new SimpleDateFormat("dd/M/yyyy"));
dateFormats.add(new SimpleDateFormat("dd/MM/yyyy"));
dateFormats.add(new SimpleDateFormat("dd-MMM-yyyy"));
// add more, if needed.
}
public static Date convertToDate(String input) throws Exception {
Date result = null;
if (input == null) {
return null; // or throw an Exception, if you wish
}
for (SimpleDateFormat sdf : dateFormats) {
try {
result = sdf.parse(input);
} catch (ParseException e) {
//caught if the format doesn't match the given input String
}
if (result != null) {
break;
}
}
if (result == null) {
throw new Exception("The provided date is not of supported format");
}
return result;
}
}