0

我有一个从命令行运行的应用程序。作为它的参数之一,它具有应用程序应该开始处理某些数据的日期。日期可以有两种不同的格式yyyy-MM-ddyyyy-MM-dd HH:mm:ss. 但是当我使用第二种格式的日期运行应用程序时(例如 2012-04-18 15:05:08),它使用 -dd 和 HH 之间的空格作为参数分隔符。我得到了例外

No argument is allowed: 15:05:08

我可以在命令行中将日期用引号括起来。但是有没有其他方法可以做到这一点,而不用包装它?

为了解析命令行参数,我正在使用org.kohsuke.args4j库。有什么建议么?

4

2 回答 2

1

只需在数组上添加一些验证以避免空指针异常

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);
    }
  }
于 2014-12-11T14:27:03.457 回答
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 做到这一点)。

于 2014-12-11T12:10:49.440 回答