java中一个日期减去另一个日期得到的是毫秒数的值。所以你想得到从1900.1.1到你输入的日子有多少天必须自己实现。我简单写了个。有些显示问题你自己在整理下。
public static void calculate(int y,int m,int d){
//用你给定的年,月,日初始化一个Date对象
Date d1 = new Date(y,m,d);
//得到这个日子离1970.1.1的毫秒数
long m1 = d1.getTime();
//把1900.1.1也初始化成一个Date对象
Date d2 = new Date(1900,1,1);
long m2 = d2.getTime();
//m1-m2就是1900.1.1到给定日子中间的毫秒数
long dis = m1-m2;
//把毫秒数转化成天数
long days = dis/(1000*60*60*24);
int dayInt = (int)days;
for(int i= 0;i<=dayInt;i++){
String str="";
if(i == dayInt){
str = y+"-"+m+"-"+d;
}
//i 代表距离1900.1.1的天数,举个例子你就明白,例如1900.1.2-1900.1.1 =1天,那么1%7 =1,那天就是周二,如果是余2那天就是周三,如果余3就是周四,余4就是周五,余5就是周六,余6就是周日,余0就是周一
switch(i%7){
case 6:
System.out.println(str+" is Sunday");
break;
case 0:
System.out.println(str+" is Monday");
break;
case 1:
System.out.println(str+" is Tuesday");
break;
case 2:
System.out.println(str+" is Wednesday");
break;
case 3:
System.out.println(str+" is Thursday");
break;
case 4:
System.out.println(str+" is Friday");
break;
case 5:
System.out.println(str+" is Saturday");
break;
}
}
}
单独用for的话太麻烦了
你还要考虑闰年啊 每月多少天啊 这些都要做判断的
如果不考虑这些问题的话
你输入年月日 year month day
( (year-1900)*365 + (month-1)*31 +day + 1 )%7 看余数就行了 余数是几就是星期几
这是最简单的 但是没有意义
我感觉出这道题的人的用意 应该是让你练习 for循环的多层嵌套
三层循环+判断即可 不用纠结于闰年啊 月份天数不同之类的
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");//规定输入日期的格式,年年年年.月月.日日
Date date = sdf.parse(s);//将输入的字符串转化为Date
Calendar cal = Calendar.getInstance();
cal.setTime(date);//使用date设置此 Calendar 的时间
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;//返回给定日历字段的值,一周第一天是周日
String week[]={ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
if (w < 0) {
w = 0;
}
System.out.println(week[w]);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
把你输入的年月日转换成格林威治毫秒数减去已知的已知1900.1.1是星期一的毫秒数,得到的结果对7*24*60*60*1000取余,得到的余数再对24*60*60*1000取模。如果模是0表示星期1,模是6表示星期7