【发布时间】:2013-11-24 16:02:28
【问题描述】:
我想计算两个日期之间的天数,但我在解析输入流时遇到问题...
如果我输入像“22 1 2013”这样的日期,它会正常工作,但我很难做到:
22.1.2013
22-01-2013
2013 年 1 月 22 日
不幸的是,我对正则表达式知之甚少,我使用 useDelimiter 进行的所有测试都失败了;也许你可以帮助我(我只允许导入扫描器类):
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;
}
}
【问题讨论】:
标签: java regex date java.util.scanner