我有一个从命令行运行的应用程序。作为其中一个参数,它有一个日期,应用程序应该从该日期开始处理某些数据。日期可以有两种不同的格式yyyy-MM-dd
和yyyy-MM-dd HH:mm:ss
。但是当我以第二种格式运行带日期的应用程序时(例如2012-04-18 15:05:08),它使用-dd和HH之间的空格作为参数分隔符。我得到了例外
No argument is allowed: 15:05:08
我可以在命令行中用引号括起日期。但还有其他方法可以这样做而不包装吗?
对于解析命令行参数,我正在使用org.kohsuke.args4j
库。
有什么建议?
答案 0 :(得分:0)
如果日期中有空格,例如2014-12-11 13:08:08
,则必须在命令行上放置引号,否则命令提示符会将其视为两个单独的参数。
当然,您可以更改您的程序,以便将日期和时间作为两个单独的参数处理:
public static void main(String[] args) {
String date = args[0];
String time = args[1];
System.out.println("The date is: " + date);
System.out.println("The time is: " + time);
String dateTime = date + " " + time;
System.out.println("The date and time: " + dateTime);
}
(你可以自己找出如何用args4j做到这一点。)
答案 1 :(得分:0)
只需在数组上添加一些验证以避免空指针异常
public static void main(String[] args) {
SimpleDateFormat sdf;
String in;
if(args.length = 1) {
in = args[0];
sdf = new SimpleDateFormat("yyyy-MM-dd");
} else if(args.lenth = 2)
in = args[0] + " " + args[1];
sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
}
if(args.length > 0) {
Date date = sdf.parse(in);
System.out.println("date:" + date);
}
}