今天是星期几(qbasic源代码)
qbasic吧
全部回复
仅看楼主
level 14
起帆远航 楼主
DEFLNG A-Z
FUNCTION week% (d$)
y = VAL(MID$(d$, 7, 4))
m = VAL(d$)
d = VAL(MID$(d$, 4, 2))
r = ((y MOD 4 = 0 AND y MOD 100 <> 0) OR (y MOD 400 = 0))
y = y - 1
day&=(y*365+y\4-y\100+y\400+VAL(MID$(" 0 31 59 90120
15118121224
3273304334",m*3,3))+r*(m>2)+d)
week% = day& MOD 7
END FUNCTION
2012年07月11日 01点07分 1
level 7
可以解释下原理吗?
2012年07月14日 07点07分 2
level 14
起帆远航 楼主
使用格式 week(07-13-2012)
2012年07月14日 08点07分 3
level 14
起帆远航 楼主

我用blitzplus弄了下,和我想的结果不一样,所以我重新做了下。大家可以看看,如果用QB编写的话,可以将Float 换成VAL 作用是将字符转换成数字。其他大家应该能看懂吧。。。
Print week("07-14-2012")
WaitKey
End
Function week% (d$)
year = Float(Mid$(d$, 7, 4))
m = Float(d$)
day = Float(Mid$(d$, 4, 2))
r = ((year Mod 4) = 0 And (year Mod 100) <> 0) Or (year Mod 400) = 0
century = (year - 1) / 100 - 17 ; /* 整百年 */
count = (year - 1) * 365 + (year - 1) / 4 ; /* 先将能被4整除的都算闰年 */
count = count +Float(Mid$(" 0 31 59 90120
15118121224
3273304334",m*3,3) +r*(m>2)+ day) ; /* 月、日 */
count = count -(11 + century) ; /* 校正11天,并除去所有的整百年 */
count = count +(century + 1) / 4 ; /* 补上整百年中的闰年 */
week% = (count+5) Mod 7
Return week
End Function

2012年07月14日 09点07分 4
level 14
起帆远航 楼主
1752年及以前,凡能被4整除的都算闰年.
1752年9月14号以后,进行校正,1752年以后,新的闰年规则 能被4整除但不能被100整除或是能被400整除和年是闰年。
" 0 31 59 90120
15118121224
3273304334" 大家可能要问,其实这里应该是某月以前月份的总天数,我用字符表示的,大家可以用数组或是其他的,0,31,59,90...334这样的格式。

2012年07月14日 09点07分 5
1