一段时间的格式为:年-月-日(2016-01-01)
比如开始日期为2016-01-01,结束时间为2016-01-31
求这段时间内星期一出现的次数,支持跨年,闰年,闰月
应该是用Calendar 但是我不会写
求大神教我怎么写
String startDate = "2016-02-01";//开始日期
String endDate = "2017-10-31"; //结束日期
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
Date bdate;
int count = 0; //星期一的次数
try {
while(true){
bdate = format1.parse(startDate);
if(bdate.getTime() <= format1.parse(endDate).getTime()){
Calendar cal = Calendar.getInstance();
cal.setTime(bdate);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY){
count++;
}
//后一天
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date ldate = df.parse(startDate);
startDate = df.format(
new Date(ldate.getTime() + 1 * 24 * 60 * 60 * 1000))
.toString();
}else{
break;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("星期一次数:"+count);
要考虑的太多了。得好好想想
时间都是根据系统来的。不用管跨年的闰月的问题。用后时间减去前时间,跨年闰月的系统都有考虑。然后看当前时间星期几,这样就好做了。
http://download.csdn.net/detail/lin_not_for_codes/9756625
这是我写过的关于计算某一天是星期几的代码,免费下载,你可以参考一下,我个人建议敲代码这东西可以学习,但不要完整的照抄,所以你可以借鉴我使用python写的这段代码去补充你自己的代码,加上自己的思考这样最后你写出来才会有收获,不难的
这样的问题前面的那位说的很好
定义两个日期对象。把日期传入,初始化 。getTime()方法 ,获取两个日期相差的毫秒数 再除以 24*60*60*1000.得到两个日期相差的天数。
后面就是获取结束日期是星期几 (天数 --结束日期是星期几)/7+1。
Calendar calendar = Calendar.getInstance();
int count = 0;
for (int i = 1; i <= 31; i++) {
calendar.set(2016, 1, i);
if (Calendar.MONDAY == calendar.get(Calendar.DAY_OF_WEEK)) {
count++;
}
}
System.out.println("星期一出现" + count + "次");
1)用int end=calendar.getActualMaximum(calendar.DAY_OF_MONTH);得到当月的最后一天
2)得到当月一号是星期几,进而求出第一个星期一是d号。
3)d=d+7< end时候n=n+1
4)返回结果