harmonv
Oct 22, 2006
- "added Gregorian date and day routines"
==__Liberty Basic Day and Date Routines__== ===LB day-of-week conversion=== This routine uses LB's built-in date$() function. In the LB universe, day 0 was Jan 1, 1901 and dates before 1/1/1901 return negative numbers. It will accept 1- or 2-digit numbers for the month and day and 1, 2, 3 or 4-digit numbers for the year. Years from00 to 99 are assumed as 2000 to 2099. It will also accept fully typed month names or 3-letter abbreviations. Some examples: Jul 4, 06 -- July 04, 2006 -- 7/4/6 -- 07/04/2006 Be aware that negative years are **incorrectly** handled as positive, so LB's date$() function can not be relied upon for any date earlier than Jan 1, 100. > -- [[user:harmonv]] [[code format="vb.net"]] ' Return day-of-week for d$ function dayofweek$(dt$) day = date$(dt$) mod 7 + 7 ' +7 for dates before Jan 1, 1901 select case (day mod 7) case 0: d$ = "Tuesday" case 1: d$ = "Wednesday" case 2: d$ = "Thursday" case 3: d$ = "Friday" case 4: d$ = "Saturday" case 5: d$ = "Sunday" case 6: d$ = "Monday" end select dayofweek$ = d$ end function [[code]] ===Gregorian Year, Month, Day to Julian Day #===--- coming soon ---[[code format="vb.net"]] ' Convert Gregorian year,month,day to Julian Day # function G2Jd(yr,mo,dy) a = int((14-mo)/12) y = yr + 4800 - a m = mo + 12*a - 3 G2Jd = dy + int((153*m+2)/5)+365*y+int(y/4)-int(y/100)+int(y/400)-32045 end function [[code]] ===Julian Day to Gregorian Year, Month, Day===--- coming soon ---[[code format="vb.net"]] ' Julian day to Gregorian date function Jd2G(jd, byref yr, byref mo, byref dy) a = jd + 32044 b = int((4*a+3)/146097) c = a - int((146097*b)/4) d = int((4*c+3)/1461) e = c - int(1461*d/4) m = int((5*e+2)/153) dy = e - int((153*m+2)/5) + 1 mo = m + 3 - 12*int(m/10) yr = 100*b + d - 4800 + int(m/10) end function [[code]] ===Gregorian Year, Month, Day to day-of-week=== [[code format="vb.net"]] ' Gregorian date to day-of-week (0=Sun, 1=Mon, ...) function G2dow(yr,mo,dy) a = int((14-mo)/12) m = mo + 12*a - 2 y = yr - a G2dow = (dy + y + int(y/4)-int(y/100)+int(y/400)+int(31*m/12)) mod 7 end function [[code]] The calculations for the Gregorian date and day routines are from Claus Tøndering's excellent Calendar FAQ page at http://www.tondering.dk/claus/calendar.html They can be freely distributed for all non-commerical uses. ----Take care > -- [[user:harmonv]]