Java代码
import java.io.*;
import java.util.TreeSet;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static TreeSet<String>ans = new TreeSet<>();
static int []normalYear = {0,31,28,31,30,31,30,31,31,30,31,30,31};
static int []leapYear = {0,31,29,31,30,31,30,31,31,30,31,30,31};
static String []num = {"19","20"};
static String maxDate = "2059-12-31",minDate = "1960-01-01";
static boolean isLeapYear(String year){
int numYear = Integer.parseInt(year);
return numYear % 4 == 0 && numYear % 100 != 0 || numYear % 400 == 0;
}
static void add(String a,String b,String c){
String res;
int month = Integer.parseInt(b);
if (month == 0 || month > 12)return;
int maxDay;
if (isLeapYear(a))maxDay = leapYear[month];
else maxDay = normalYear[month];
int day = Integer.parseInt(c);
if (day == 0 || day > maxDay)return;
res = a + "-" + b + "-" + c;
if (res.compareTo(maxDate) <= 0 && res.compareTo(minDate) >= 0)ans.add(res);
}
public static void main(String[] args) throws IOException {
String []all = br.readLine().split("/");
for(int i = 0 ; i < 2 ; i ++){
add(num[i] + all[0],all[1],all[2]);
add(num[i] + all[2],all[0],all[1]);
add(num[i] + all[2],all[1],all[0]);
}
for(String i :ans) System.out.println(i);
}
}
这个循环拼接日期属实妙,学到了