问题描述
PublicFunctiontx(rqAsVariant)AsDoubledayue=Choose(Month(rq),0,1,1,2,2,3,3,4,4,5,5,6)runri=IIf(IsDate(Year(rq)&"-2-29"),1,0)tx=Year(rq)+(Month(rq)-1)/12+(Day(rq)+dayue+runri)/365+(Hour(rq)+Minute(rq)/60)/(365*24)EndFunction-------这个vba公式如何转换成vb.net的写法?
解决方案
解决方案二:
vb.net直接有日期函数的
解决方案三:
rq是日期吗?希望如何转?rq的格式是什么?dimstrasstring=rq.tostring("yyMMddhhmmss"),4位年份就用yyyy,分割符随便添。上面就能转换了。如果希望得到日期性,就用CDATE就行了。dimdtasdate=cdate(rq)
解决方案四:
解决方案五:
多谢楼上两位的回答,但不是我想要的答案啊。rq就是日期啊比如2014/1/2412:30:50=2014.067136
解决方案六:
.067136这是秒阿
解决方案七:
在vb.net里很多与vb差不多Variant在vb.net里用ObjectDay->DateAndTime.DayDimaAsDoublea=tx("2014/1/2412:30:50")Debug.Print(a)PublicFunctiontx(ByValrqAsObject)AsDoubleDimdayue,runridayue=Choose(Month(rq),0,1,1,2,2,3,3,4,4,5,5,6)runri=IIf(IsDate(Year(rq)&"-2-29"),1,0)tx=Year(rq)+(Month(rq)-1)/12+(DateAndTime.Day(rq)+dayue+runri)/365+(Hour(rq)+Minute(rq)/60)/(365*24)EndFunction
解决方案八:
非常感谢wind_cloud2011!就是这个意思。另外,我同学问,如果用c#应该如何写这两句:dayue=Choose(Month(rq),0,1,1,2,2,3,3,4,4,5,5,6)runri=IIf(IsDate(Year(rq)&"-2-29"),1,0)
解决方案九:
doublett;intm;publicintChoose(intmon){switch(mon){case1:m=0;break;case2:m=1;break;case3:m=1;break;case4:m=2;break;case5:m=2;break;case6:m=3;break;case7:m=3;break;case8:m=4;break;case9:m=4;break;case10:m=5;break;case11:m=5;break;case12:m=6;break;}returnm;}publicdoubletx(DateTimerq){intmonth=rq.Month;intdayue=Choose(month);intrunri=IsDate(rq.Year+"-2-29")?1:0;tt=rq.Year+(rq.Month-1)/12+(rq.Day+dayue+runri)/365+(rq.Hour+rq.Minute/60)/(365*24);returntt;}publicstaticboolIsDate(stringstr){if(string.IsNullOrEmpty(str))returnfalse;DateTimedate;returnDateTime.TryParse(str,outdate);}privatevoidbutton3_Click(objectsender,EventArgse){strings="2014/11/2412:30:50";DateTimed=Convert.ToDateTime(s);doubledb=tx(d);}
解决方案十:
多谢wind_cloud2011再次出手相助!非常感激!