问题描述
Java的Date里,加天数的时候怎么忽略星期六和星期天?最近工作中遇到这个问题,我看了Java的API,和common.lang工具包,都没有相应的方法,请各位高手指教一下。万分感谢
解决方案
解决方案二:
把你的例子跟结果发上来
解决方案三:
例如加100天,就在循环里加100次1天,在循环里过滤掉周六周日就可以了。
解决方案四:
不要什么都总想要去找到现成的方法,花了时间却还没解决,很简单的循环就可以解决的问题。
解决方案五:
动用一下你的数学脑细胞
解决方案六:
3楼说的很对呀,要想有大的提高,得多看源代码,也要多思考,当你觉得源代码无法满足你的要求时,你就对源代码进行修改或重写,这时候你不但有成就感,也表明你开始登堂入室了。
解决方案七:
java.util.Calendar日历类里面不是有获取星期几的方法?写个ifelse不会?
解决方案八:
你去data里面找当然一个毛都没有
解决方案九:
Calendar.getInstance().get(Calendar.DAY_OF_WEEK)==Calendar.THURSDAY今天是否为星期四建议楼主学些下JDK不会没关系回查就行
解决方案十:
获取当前基本日期是星期几,根据增加天数算出其中有多少个周六和周日,就可以了。当天为周一(记C=1)至周五(记C=5),增加I=11天,实际需要增加I+{[(C+I)-1]div5}*2,即:11+(11div5)*2=11+2*2=15,则实际需要增加15天。(div表示整除运算)当天为周日,记C=0,使用上面的公式。当天为周六,公式:I+[(I-1)div5]*2+1。若增加6天,即:6+[(6-1)div5]*2+1=6+3=9,即实际加上9天即可。
解决方案十一:
前面有人提到用循环,实际上没有必要,循环是O(N)的效率。因为每周的天数是固定的,只要知道基础日期是星期几,就可以直接计算增加的天数当中有多少个周六周日,需要增加的天数再加上这些天数就是了,这样可以达到O(1)的效率。
解决方案十二:
packagedate;importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;publicclassTest{publicstaticDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");publicstaticvoidmain(String[]args)throwsException{Dateweekend=format.parse("2011-01-21");Dateworkday=format.parse("2011-01-13");System.err.println(format.format(addWorkingDays(weekend,1)));System.err.println(format.format(addWorkingDays(workday,9)));}/***增加工作日(休息日周五周六...别扭..)**@paramdays*@return*/publicstaticDateaddWorkingDays(DatestartDate,intdays){Calendarcalendar=Calendar.getInstance();calendar.setTime(startDate);if(calendar.get(Calendar.DAY_OF_WEEK)>5){calendar.add(Calendar.DAY_OF_WEEK,Calendar.DAY_OF_WEEK-calendar.get(Calendar.DAY_OF_WEEK));}if(days>5-calendar.get(Calendar.DAY_OF_WEEK)){intremainingDays=5-calendar.get(Calendar.DAY_OF_WEEK);days-=remainingDays;calendar.add(Calendar.DAY_OF_WEEK,remainingDays);intweeks=days/5;if(weeks%5!=0){weeks++;}calendar.add(Calendar.DAY_OF_WEEK,days+weeks*2);}else{calendar.add(Calendar.DAY_OF_WEEK,days);}returncalendar.getTime();}}
循环可能是有必要的因为说不定有些时候需要设置指定的天数为休息不过如果仅仅是算周六周日的话应该是没问题的
解决方案十三:
对不起即使指定特殊天数也不用循环代码随后奉上。。不过应该先完成工作的说..