问题描述
各位大神好,我是vb初学者,刚做了个小工具遇到点麻烦,请大神指教。PrivateFunctionWorkDays_Get(ByValYearAsString,ByValMonthAsString)AsBooleanDimplMonthDaysAsStringDimDate_StartAsString=Year+Month+"01"DimplWeeksAsStringDimplWeekendsAsStringplMonthDays=DateDiff("d",dtpSelectKey.Value,DateAdd("m",1,dtpSelectKey.Value))plWeeks=Int(plMonthDays/7)plWeekends=2*plWeeksDate_Start=CDate(Format(CInt(Date_Start),"0000/00/00"))DimplFirstDay=Weekday((Date_Start))'/1周日2周一3周二4周三5周四6周五7周六这是我的代码==做到这做不下去了,只知道某月天数和第一天是周几,想求这个月有多少工作日,求大神给些指点,感激不尽!
解决方案
解决方案二:
C#一句搞定varfunc=newFunc<int,int,int>((start,count)=>Enumerable.Range(0,count).Count(i=>(i+start)%7==0));intcount=func(4,30);//4表示星期四,30表示天数。0表示星期天,与DayOfWeek枚举一样等同下面这样dimsunCountasint=0fori=0tocountif((i+start)Mod7==0)sunCount++next
解决方案三:
引用1楼dongxinxi的回复:
C#一句搞定varfunc=newFunc<int,int,int>((start,count)=>Enumerable.Range(0,count).Count(i=>(i+start)%7==0));intcount=func(4,30);//4表示星期四,30表示天数。0表示星期天,与DayOfWeek枚举一样等同下面这样dimsunCountasint=0fori=0tocountif((i+start)Mod7==0)sunCount++next
大哥,我看不懂C#啊
解决方案四:
其实就一个for循环的事,难道fornext也看不懂DimsunCountAsInteger=0Fori=0To天数If((i+头天星期几)Mod7=0)ThensunCount+=1Next
星期几与DayOfWeek枚举对应的值一样,周四是4,周日是0
解决方案五:
引用3楼dongxinxi的回复:
其实就一个for循环的事,难道fornext也看不懂DimsunCountAsInteger=0Fori=0To天数If((i+头天星期几)Mod7=0)ThensunCount+=1Next星期几与DayOfWeek枚举对应的值一样,周四是4,周日是0
suncount是什么啊==
解决方案六:
...開頭不寫了DimsunCountAsInteger=0.....
解决方案七:
引用5楼YuiUm的回复:
...開頭不寫了DimsunCountAsInteger=0.....
我的意思是--suncount就是代表的周日的天数还是周末的天数还是别的什么==
解决方案八:
引用6楼lly921109的回复:
Quote: 引用5楼YuiUm的回复:
...開頭不寫了DimsunCountAsInteger=0.....我的意思是--suncount就是代表的周日的天数还是周末的天数还是别的什么==
週日的天數i就代表第幾天,所以加上開始是星期幾後除7的餘數就可以判斷是週幾了不過因為要從0開始可能要總天數要-1
解决方案:
sunCount=sundayCount=周日的天数i是天数的索引,从0开始的。实际生活中,月份又是从1号开始,所以准确地说该月第(i+1)日是星期几=(i+头天星期几)Mod7这个结果可以直接转换成DayOfWeek类型,也就是星期几了所以上面是判断等于0(Sunday)的时候+1得出周日的数量的
解决方案:
和我一样一周工作六天吗
解决方案:
PrivateFunctionWorkDays_Get(ByValYearAsInteger,ByValMonthAsInteger)AsIntegerDimallDaysAsInteger=DateTime.DaysInMonth(Year,Month)DimworkDaysAsInteger=20'1日~28日7周有20个工作日'IfallDays>28ThenDimweekDayAsInteger=NewDate(Year,Month,29).DayOfWeek'29日的星期'SelectCaseweekDayCase1To3workDays+=(allDays-28)Case4workDays+=Choose(allDays-28,1,2,2)Case5workDays+=1Case6workDays+=Choose(allDays-28,0,0,1)Case0workDays+=Choose(allDays-28,0,1,2)EndSelectEndIfReturnworkDaysEndFunction
解决方案:
可以这样做可能很简单但是效率会不高循环出本年本月有多少天然后循环出当天是不是周6或者周日但是得到当月总天数休息天数就是工作天数但是有个问题节假日通常放假的节假日可以通过键值对预先写好然后你懂的思路是这样不推荐给你代码首先懒得写最重要的是懒得写其次是你自己根据思路去写能很好的学习和理解一些东西
解决方案:
我是来凑热闹的