回 帖 发 新 帖 刷新版面

主题:万天纪念日

很多同学都想知道自己出生后第一万天纪念日的日期(出生曰算第0天)。同学们的生日为YY年MM月DD日,小马希望编一程序,输入某同学的生日YY,MM,DD后,即可输出一万天纪念日日期

回复列表 (共2个回复)

沙发

DECLARE FUNCTION Date2Number& (d$)
DECLARE FUNCTION Number2Date$ (day&)
DEFLNG A-Z
COLOR 7, 0
CLS
myday$ = "07-17-1979"
PRINT Date2Number&(DATE$), Date2Number&(myday$), Date2Number&(DATE$) - Date2Number&(myday$), Number2Date$(Date2Number&(myday$) + 10000)

DEFSNG A-Z
FUNCTION Date2Number& (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
Date2Number& = (y& * 365 + y& \ 4 - y& \ 100 + y& \ 400 + VAL(MID$("    0 31 59 90120151181212243273304334", m& * 3, 3)) + r& * (m& > 2) + d&)
END FUNCTION

FUNCTION Number2Date$ (day&)
y& = day& / 365.254
DO
  n& = day& - (y& * 365 + y& \ 4 - y& \ 100 + y& \ 400)
  IF n& < 0 THEN y& = y& - 1
LOOP WHILE n& < 0
y& = y& + 1
r& = ((y& MOD 4 = 0 AND y& MOD 100 <> 0) OR (y& MOD 400 = 0))
FOR m& = 12 TO 1 STEP -1
 k& = VAL(MID$("    0 31 59 90120151181212243273304334", m& * 3, 3)) + r& * (m& > 1)
 IF n& > k& THEN EXIT FOR
NEXT
d& = n& - k&
Number2Date$ = RIGHT$("0" + LTRIM$(STR$(m&)), 2) + "-" + RIGHT$("0" + LTRIM$(STR$(d&)), 2) + "-" + LTRIM$(STR$(y&))
END FUNCTION

板凳

moz为什么喜欢用长整型?

我来回复

您尚未登录,请登录后再回复。点此登录或注册