Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
another date challenge
#7
Small is beautiful
Code:
'Conversion of day of year and year to day of month and day of week
'by Antoni gual 2006/12/15 for Agamemnus contest at QBN
'Tested in QB 1.1
'
DEFINT A-Z
DECLARE FUNCTION DayofWeek (y, m, D)
DECLARE FUNCTION ISLEAPYEAR (y)
DECLARE FUNCTION daysinmonth (y, m)

DO
INPUT "year (0 to exit)"; y
IF y < 1 THEN EXIT DO
INPUT "day of year"; dy
IF dy < 1 OR dy > 365 - ISLEAPYEAR(y) THEN PRINT "bad day of year": END
nt = 0
m = 0
DO
n = nt
m = m + 1
nt = nt + daysinmonth(y, m)
LOOP UNTIL dy <= nt

dm = dy - n
'PRINT "month (1=January...12=December)"; m
PRINT "day of month = "; dm
PRINT "day of week (1=monday...7=sunday) "; DayofWeek(y, m, dm) + 1
LOOP
END
'
'-------------------------------------------------------------------------
FUNCTION DayofWeek (y, m, D)
  '0=monday
  DIM P, Q
  IF m > 2 THEN
    P = m - 3
    Q = y
  ELSE
    P = m + 9
    Q = y - 1
  END IF
DayofWeek = (D + 1 + Q + Q \ 4 - Q \ 100 + Q \ 400 + CINT(2.6 * P)) MOD 7
END FUNCTION

'
'-------------------------------------------------------------------------
FUNCTION daysinmonth (y, m)
'get nr of days in a month  of a year(check for leap year if february)
SELECT CASE m
CASE 2: daysinmonth = 28 - ISLEAPYEAR(y)
CASE 1, 3, 5, 7, 8, 10, 12: daysinmonth = 31
CASE ELSE: daysinmonth = 30
END SELECT
END FUNCTION

'
'-------------------------------------------------------------------------
FUNCTION ISLEAPYEAR (y)
'Returns -1 if Gregorian year y is a leap year
ISLEAPYEAR = (y MOD 4 = 0) - (y MOD 100 = 0) + (y MOD 400 = 0)
END FUNCTION
'
'--------------------------------------------------------------------------
Antoni
Reply


Messages In This Thread
another date challenge - by Agamemnus - 12-11-2006, 11:04 PM
another date challenge - by DrV - 12-12-2006, 03:44 AM
another date challenge - by Agamemnus - 12-13-2006, 01:02 AM
another date challenge - by DrV - 12-14-2006, 12:41 AM
Re: another date challenge - by Moneo - 12-14-2006, 06:36 AM
another date challenge - by Agamemnus - 12-16-2006, 01:23 AM
another date challenge - by Antoni Gual - 12-16-2006, 01:47 AM
another date challenge - by Moneo - 12-18-2006, 08:48 AM
another date challenge - by Antoni Gual - 12-18-2006, 10:26 PM
another date challenge - by Agamemnus - 12-19-2006, 12:07 AM
another date challenge - by Antoni Gual - 12-19-2006, 02:07 AM
another date challenge - by Agamemnus - 12-25-2006, 06:13 AM
another date challenge - by Antoni Gual - 12-25-2006, 03:30 PM
another date challenge - by Moneo - 12-26-2006, 01:00 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)