我想计算两个日期之间的天数,但我在解析输入流时遇到问题......
如果我输入“22 1 2013”之类的日期,它可以正常工作,但我很难:
2013年1月22日
22-01-2013
2013年1月22日
不幸的是,我对正则表达式知之甚少,而且所有使用useDelimiter的测试都失败了;也许你可以帮助我(我只允许导入Scanner级):
import java.util.Scanner;
public class NewDateDifference {
public static void main(String[] args) {
int day1, day2, month1, month2, year1, year2;
Scanner scan = new Scanner(System.in);
System.out.print("First Date:\t");
day1 = scan.nextInt();
month1 = scan.nextInt();
year1 = scan.nextInt();
/** scan = new Scanner(scan.next()).useDelimiter("\\.");
if ( scan.hasNextInt() ) {
day1 = scan.nextInt();
}
if ( scan.hasNextInt() ) {
month1 = scan.nextInt();
}
if ( scan.hasNextInt() ) {
year1 = scan.nextInt();
}
scan.close(); **/
System.out.print("Second Date:\t");
day2 = scan.nextInt();
month2 = scan.nextInt();
year2 = scan.nextInt();
int diff = calculateDays(year2, month2, day2) - calculateDays(year1, month1, day1);
System.out.println("Days: " + Math.abs(diff));
}
public static int calculateDays(int year, int month, int day) {
int[] dayTillMonth = {0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337};
if(month < 3) {
year -= 1; month += 9;
} else {
month -= 3;
}
return year * 365 + year/4 - year/100 + year/400 + dayTillMonth[month] + day;
}
}
答案 0 :(得分:1)
尝试使用此分隔符
scan.useDelimiter("[\\s.\\-/]+");
它会将一个或多个字符设置为分隔符
\\s
空格,如\r\n
.
-
/
答案 1 :(得分:0)
取消注释代码中的注释部分,并使用以下内容:
.useDelimiter("."); //for 22.1.2013
.useDelimiter("\\"); //for 22\1\2013
.useDelimiter("/"); //for 22/1/2013 (most used i think)
.useDelimiter("-"); //for 22-1-2013