当前位置: 首页 > 工具软件 > Kalendae > 使用案例 >

kalendae生成的日期字符串

束俊材
2023-12-01
/**
	 * 解析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;
		}
	}

 

 类似资料: