联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
Originally posted by slore at 2007-5-2 04:52 AM: 我有个思路就是求余...除365 余数Y1再先对4求余(闰年)看有几个闰年给Y1要再减几个1,得到Y2 然后Y2化成月和日即可。。。 (哈哈,还是execute够偷懒)
Originally posted by slore at 2007-5-2 05:28 AM: 晕死,好像叫新建 脚本文件.vbs 貌似删除了。。那重写看看好了=。=
Dim ADYear Dim ADMonth Dim ADDay Dim ADDDay Dim RnMod Dim Mon(12) Dim strDate, strADDay strDate = "2007-3-4" strADDay = 800 ADYear = Year(strDate) RnMod = ADYear Mod 4 If RnMod = 0 Then tempRNYear = 1 ADMonth = Month(strDate) ADDay = Day(strDate) strADDay = strADDay + Date2Day(ADYear, ADMonth, ADDay) tempYear = strADDay \ 365 tempRNday = strADDay Mod 365 If tempYear <> 0 Then tempRNYear = tempRNYear + (RnMod + tempYear) \ 4 tempRNday = tempRNday - tempRNYear End If ADYear = ADYear + tempYear MsgBox Day2Date(ADYear, tempRNday) Function Date2Day(ByVal y, ByVal m, ByVal d) Mon(1) = 31: Mon(2) = 28: Mon(3) = 31: Mon(4) = 30: Mon(5) = 31: Mon(6) = 30 Mon(7) = 31: Mon(8) = 31: Mon(9) = 30: Mon(10) = 31: Mon(11) = 30: Mon(12) = 31 Date2Day = 0 If IsDate(y & "/2/29") Then Mon(2) = 29 Dim i For i = 1 To m - 1 Date2Day = Date2Day + Mon(i) Next Date2Day = Date2Day + d End Function Function Day2Date(ByVal y, ByVal Days) Mon(2) = 28 If IsDate(y & "/2/29") Then Mon(2) = 29 Dim i If Days > 31 Then For i = 1 To 11 If Days < Mon(i) Then Exit For Days = Days - Mon(i) Next ADMonth = i Else ADMonth = 1 End If Day2Date = y & "-" & ADMonth & "-" & Days End Function
Originally posted by flyinspace at 2007-5-2 05:34 PM: 算法很简单。。 也比我的用得聪明。。。但因为没有考虑闰年的存在。。 计算长一点的天数时就会出问题。。。 若加入闰年的判断。。会好很多。
dd+y*365+y/4-y/100+y/400