计算星期五在13日之间由空格分隔的两个日期

时间:2015-09-01 06:29:04

标签: java date

Date startdate=new Date();
Date enddate=new Date();
DateFormat format = new SimpleDateFormat("dd MM yyyy",Locale.US);


Scanner scanner = new Scanner(System.in);    
String line = scanner.nextLine();
String line1 = scanner.nextLine();

try{
    startdate = format.parse(line);
} 
 catch(ParseException e){
    System.out.println("Sorry!!");
}

try {
    enddate = format.parse(line1);
} 
catch(ParseException e){
    System.out.println("Sorry!!");
}

如果我的日期在两个单独的行上给出,那么我的代码可以正常工作。但是我想让它适用于由空格分隔的同一行中的输入(两个日期之间以及日期月之间(每个日期的DD MM YYYY格式))。

输入如下:01 01 2015 10 10 2015

我需要分别在startdate和enddate中扫描这两个日期。我该怎么办?

4 个答案:

答案 0 :(得分:1)

您可以使用substring

  String Str = new String("01 01 2015 10 10 2015");

  System.out.println(Str.substring(11) );   // 10 10 2015

  System.out.println(Str.substring(0, 10) );  // 01 01 2015

答案 1 :(得分:0)

这是关于如何执行此操作的指南。我希望你能编写自己的代码。

  • 将输入转换为字符串。 (两个日期一行)
  • 将字符串拆分在中间的空格处。
  • 然后将每个部分都投放到format.parse();

答案 2 :(得分:0)

如果您不知道字符串的确切长度,即可以将2015年1月1日作为1 1 2015或其他字符(例如多个空格)传递,请尝试使用正则表达式:

String input = "1 1 2015   10 10 2015";

SimpleDateFormat f = new SimpleDateFormat("dd MM yyyy");

Pattern p = Pattern.compile( "[0-9]{1,2} [0-9]{1,2} [0-9]{4}" );
Matcher m = p.matcher( input );

while( m.find() )
{
  System.out.println( f.parse( m.group() ) );
}

表达式的简短细分:

  • [0-9]{1,2}表示一个或两个ascii数字(\d也会匹配非ascii数字)
  • [0-9]{4}正好意味着四个ascii数字
  • 数字组由单个空格分隔,即它们与粗略模式x y z匹配,并且其间具有多个空格的任何输入都不匹配。

答案 3 :(得分:0)

好吧,将1对1指向您的代码。你应该怎么做。

    Scanner scanner = new Scanner(System.in);    
    String line = scanner.nextLine();
    Pattern pattern = Pattern.compile("[0-9]{1,2}\\s+[0-9]{1,2}\\s+[0-9]{4}");
    Matcher m = pattern.matcher(line);

    String d1 = null;
    String d2 = null;

    DateFormat format = new SimpleDateFormat("dd MM yyyy",Locale.US);

    Date startDate = null;
    Date endDate = null;

    try {
        if(m.find()) {
            d1 = m.group();
            startDate = format.parse(d1);
        } else {
            System.out.println("Sorry for date 1.");
        }
        if(m.find()) {
            d2 = m.group();
            endDate = format.parse(d2);
        } else {
            System.out.println("Sorry for date 2.");
        }
    } catch (ParseException e) {
        System.out.println("Incorrect date format");
    }