/**
* 解析Kalendae插件录入的日期,返回list:{开始日期String,结束日期String} 输入的格式例如:
* "2012/06/01 - 2012/07/31" 输出为list:{"2012-06-01","2012-07-31"}
* 单个日期解析为list{当天日期,当天日期}
*
* @param kalendaeStr
* kalendae生成的日期字符串
* @return
*/
public static List<String> getKalendaeString(String kalendaeStr) {
List<String> result = new ArrayList<>();
String start = null;
String end = null;
String[] dates = kalendaeStr.split(" - ");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
if (dates.length == 2) {
Date startDate = parseDate(dates[0], 0);
Date endDate = parseDate(dates[1], 0);
if (startDate != null) {
start = formatter.format(startDate);
}
if (endDate != null) {
end = formatter.format(endDate);
}
} else if (dates.length == 1) {
Date date = parseDate(dates[0], 0);
if (date != null) {
start = formatter.format(date);
end = start;
}
}
if (start == null) {// 开始格式错误则转为1970-1-1
start = "1970-1-1";
}
if (end == null) {// 结束格式错误则转为当前日期
end = formatter.format(new Date());
}
result.add(start);
result.add(end);
return result;
}
/**
* 内部方法,根据某个索引中的日期格式解析日期
*
* @param dateStr
* 期望解析的字符串
* @param index
* 日期格式的索引
* @return 返回解析结果
*/
public static Date parseDate(String dateStr, int index) {
DateFormat df = null;
try {
// 从数组第一种默认格式进行转换,转换失败则继续数组下一种类型
df = new SimpleDateFormat(dateFormat[index]);
return df.parse(dateStr);
} catch (ParseException pe) {
return parseDate(dateStr, index + 1);
} catch (ArrayIndexOutOfBoundsException aioe) {
// 数组越界则表示标准数组中的类型都不符合传入的字符串格式
return null;
}
}