VB 已知某月天数和第一天是周几,求某月工作日的天数

问题描述

各位大神好,我是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或者周日但是得到当月总天数休息天数就是工作天数但是有个问题节假日通常放假的节假日可以通过键值对预先写好然后你懂的思路是这样不推荐给你代码首先懒得写最重要的是懒得写其次是你自己根据思路去写能很好的学习和理解一些东西
解决方案:
我是来凑热闹的

时间: 2024-12-21 23:51:56

VB 已知某月天数和第一天是周几,求某月工作日的天数的相关文章

c++-算法题。已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现?

问题描述 算法题.已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现? 算法题.已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现? 解决方案 计算角度有点复杂,或许可以考虑判断点在两对平行线之间.判断点位于一对平行线之间(一条线上,一条线下):将点代入一对平行线方程,判断L1(x,y)*L2(x,y)<=0. 解决方案二: 如果两个平行四边形相交,那么一个四边形中必然有一个顶点位于令一个四边形的内部. 而判断一个点P是否在一个平行四边形ABC

C#编程中,已知等差数列的首项,尾项和公差,求等差数列的没一项

问题描述 这是我写的代码,语法没错误,但是运行起来总有无法处理的异常usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacedcsl{publicpartialclassForm1:Form{publi

蒙牛牛奶含黄曲霉毒素质检总局最晚11月已知

"我们是从网上.微博上才知道这事的."四川省眉山市畜牧局一位工作人员说.近日根据质检总局的检测报告,蒙牛集团一款眉山工厂2011年10月18日生产的250ml/盒包装纯牛奶产品被检测出强致癌物黄曲霉毒素M1,实测值为1.2μg/kg,而国家规定最高值为0.5μg/kg,超标140%.和普通读者一样,四川省畜牧局.眉山市畜牧局两级主管部门的官员同样是在质检总局公布结果后,从网上知道的.蒙牛副总裁接受南都记者采访时承认原料奶检测有漏洞,现在已确认超标的原因是奶牛的饲料---而奶源和饲料正是

加密解密算法-已知VB编写的加密算法,求破对应解密算法!

问题描述 已知VB编写的加密算法,求破对应解密算法! 求大神编写对应的解密算法!跪谢! Dim Psw As String Dim Key As String Psw = Trim(Text1.Text) Key = StrReverse(Psw) Key = Key & Left(Key, 1) & Right(Key, 1) Key = Key & Key & Key Dim Val As String Dim Idx1 As Integer Dim Idx2 As I

vb usb设备 pid-用vb判断已知vid pid的USB设备是否连接OK?

问题描述 用vb判断已知vid pid的USB设备是否连接OK? 已通过设备管理器知道了USB设备的vid pid,可否根据设备PID和VID查询设备是否存在?非存储设备,例如ipad.iphone.usb摄像头等设备

已知一个面的各个角坐标如何用VB判断一个点是否在面之内?

问题描述 已知一个面的各个角坐标如何用VB判断一个点是否在面之内? 已知一个面的各个角坐标如何用VB判断一个点是否在面之内? 已知一个面的各个角坐标如何用VB判断一个点是否在面之内? 解决方案 从图形外部构建一个直线方程,到这个点,看和你的曲线有几个交点,偶数个就在内部,奇数个就在外部. 解决方案二: 可以根据在直线的左边还是右边来判断,用向量的叉乘来做就行了. 解决方案三: caozhy给的方法很好啊.以前学过现在都不知道了,呵呵.这样就不用管面是几边形了.

朝鲜互联网:全国只有1024个已知IP,包月545美元

朝鲜互联网:全国只有1024个已知IP,包月545美元朝鲜22日 下午开始出现互联网非常不稳定状况,基本处于"网络无法连接"状态,23日上午网络基本恢复.这让外界猜测朝鲜断网是否是美国因为索尼影业被黑事件而采取的报复行动.这一断网事件引发外界对朝鲜互联网建设水平的关注,<环球时报>记者通过各种碎片化的信息试图拼凑出朝鲜网络发展的概况.核心机构和人员才能上互联网朝鲜目前互联网民用化普及率还不太高,一般是比较核心的机构和人员在使用,朝鲜也从未公开过有关国内互联网基础建设与运营的

已知文件类型的扩展名如何设置显示与隐藏?

  当你想把文件扩展名隐藏或是显示的时候,有木有突然感觉有那么一瞬间皱着眉头过呢?当你想要设置显示与隐藏扩展名的时候却莫名其妙的发现"隐藏已知文件类型的扩展名"这一项选不见了,心理莫名的紧张是不是哪里出问题了呢?不用担心,下面小编就为大家介绍已知文件类型的扩展名如何设置显示与隐藏方法,来看看吧 显示和隐藏已知文件类型的扩展名设置 1.当我们不想让文件显示文件扩展名或是想隐藏文件扩展名的时候,该什么设置呢? 2.若是要隐藏文件的扩展名,打开一个文件夹,点击[工具]---[文件选项]---

对已知进行数据统计与分析

问题描述 对已知进行数据统计与分析 图中最左是1到9的随机数,顺序是从上往下a然后b,规则是以A为例当随机数从第一个不是A中数起到为A中的数结束,进行个数统计,如图表中统计A为例连续14个不是A中的数,记为15,连续出现A中数时不记,以此类推进行统计BCDEF. 解决方案 图呢? 解决方案二: 我图传不上