黑色星期五
Description
“黑色星期五”就是支既是星期五又是13日的日期。现在需要解决的问题是计算两个日期之间有多少个这样的日期。
Input
有多组测试数据,每组测试数据占一行,每行包含6个整数(y1,m1,d1,y2,m2,d2),相互之间用空格隔开,分别表示两个日期的年月日,即y1年m1月d1日和y2年m2月d2日。其中y2年m2月d2日是y1年m1月d1日后面的日期。
Output
每组测试数据输出占一行,每行包含一个整数,表示两日期之间的黑色星期五的天数。
Sample Input
2015 3 13 2015 11 13
2015 1 1 2015 12 31
Sample Output
2
3
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.*;
public class Main {
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy M d"); // 日期格式
Scanner sc=new Scanner(System.in);
String str1=sc.nextLine();
String str2=sc.nextLine();
Date date = dateFormat.parse(str1); // 开始的指定日期
int h=0;
for(int i=0;;i++) {
Date newDate = addDate(date, i); // 指定日期加上i天
String a=dateFormat.format(newDate);//格式化
String b=newDate.toString().substring(0,3);//截取Fri
String[] array =a.split("\\s+");//以空格截取字符数字
if(array[2].equals("13")&&b.equals("Fri")) {//如果等于13和Fri就输出
h++;
System.out.println(newDate);
System.out.println(a);
System.out.println();
}
if(a.equals(str2)) {
System.out.println(h);
return;
}
}
}
public static Date addDate(Date date,long day) throws ParseException {
long time = date.getTime(); // 得到指定日期的毫秒数
day = day*24*60*60*1000; // 要加上的天数转换成毫秒数
time+=day; // 相加得到新的毫秒数
return new Date(time); // 将毫秒数转换成日期
}
}