/**
* 处理参数
*
* @param conf
* @param args
*/
private void processArgs(Configuration conf, String[] args) {
String date = null;
for (int i = 0; i < args.length; i++) {
if ("-d".equals(args[i])) {
if (i + 1 < args.length) {
date = args[++i];
break;
}
}
}
// 要求date格式为: yyyy-MM-dd
if (StringUtils.isBlank(date) || !TimeUtil.isValidateRunningDate(date)) {
// date是一个无效时间数据
System.out.println("----------------------" + date
+ "date是一个无效时间数据");
System.out.println("------正确的格式是-----------yyyy-MM-dd");
// 设置默认的时间,昨天
date = TimeUtil.getYesterday(); // 默认时间是昨天
}
System.out.println("----------------------" + date);
conf.set(GlobalConstants.RUNNING_DATE_PARAMES, date);
}
接收args
如果第一个参数是-d 读第二个时间参数
String date = null;
for (int i = 0; i < args.length; i++) {
if ("-d".equals(args[i])) {
if (i + 1 < args.length) {
date = args[++i];
break;
}
}
}
取第一第二个参数, 如果第二个参数符合规则,设置处理日期
if (StringUtils.isBlank(date) || !TimeUtil.isValidateRunningDate(date)) {
// date是一个无效时间数据
System.out.println("----------------------" + date
+ "date是一个无效时间数据");
System.out.println("------正确的格式是-----------yyyy-MM-dd");
// 设置默认的时间,昨天
date = TimeUtil.getYesterday(); // 默认时间是昨天
}
TimeUtil类所有方法
如果为空或者 校验是否符合
校验日期用正则表达式
/**
* 判断输入的参数是否是一个有效的时间格式数据
* 遇到数字日期时,调用这个方法
* @param input
* @return
*/
public static boolean isValidateRunningDate(String input) {
Matcher matcher = null;
boolean result = false;
String regex = "[0-9]{4}-[0-9]{2}-[0-9]{2}";
if (input != null && !input.isEmpty()) {
Pattern pattern = Pattern.compile(regex);
matcher = pattern.matcher(input);
}
if (matcher != null) {
result = matcher.matches();
}
return result;
}
将传入的参数设置到conf中
conf.set(GlobalConstants.RUNNING_DATE_PARAMES, date);
第一次使用全局变量
public class GlobalConstants {
/**
* 定义的运行时间变量名
*/
public static final String RUNNING_DATE_PARAMES = "RUNNING_DATE";