今夕何夕
Accepts: 1345
Submissions: 5533
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
今天是2017年8月6日,农历闰六月十五。
小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。
小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。
Input
第一行为T,表示输入数据组数。
每组数据包含一个日期,格式为YYYY-MM-DD。
1 ≤ T ≤ 10000
YYYY ≥ 2017
日期一定是个合法的日期
Output
对每组数据输出答案年份,题目保证答案不会超过四位数。
Sample Input
3 2017-08-06 2017-08-07 2018-01-01
Sample Output
2023 2023 2024
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class a {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
int T;
String gettime;
T = in.nextInt();
for (int i = 0; i < T; i++) {
gettime = in.next();
dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
Date time = dateFormatter.parse(gettime);
cal.setTime(time);
dateFormatter.applyPattern("E");
String today = "" + dateFormatter.format(cal.getTime());
int todayyear = cal.get(Calendar.YEAR);
int todaymonth = cal.get(Calendar.MONTH)+1;
int todayday = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(""+todayyear+todaymonth+todayday);
if ((todaymonth==2&&todayday>=29)&&(todayyear % 4 == 0 && todayyear % 100 != 0) || todayyear % 400 == 0) {
String nextday;
while (true) {
cal.add(Calendar.YEAR, +4);
nextday = "" + dateFormatter.format(cal.getTime());
if (nextday.equals(today)) {
int year = cal.get(Calendar.YEAR);
System.out.println(year);
break;
}
}
} else {
String nextday;
while (true) {
cal.add(Calendar.YEAR, +1);
nextday = "" + dateFormatter.format(cal.getTime());
if (nextday.equals(today)) {
int year = cal.get(Calendar.YEAR);
System.out.println(year);
break;
}
}
}
}
}
}