' GRE2JUL$(0.0) Convert Gregorian Date to Julian 04/05/1988-09/30/2004 ' -------------------------------------------------------------------------- ' Copyright (C) 1988-2004 by Vladimir Veytsel www.davar.net ' Type --------------------------------------------------------------------- ' Function ' Description -------------------------------------------------------------- ' GRE2JUL$ function converts Gregorian date into Julian date format. ' Declaration -------------------------------------------------------------- ' DECLARE FUNCTION GRE2JUL$(Greg.Date$) ' Parameter ---------------------------------------------------------------- ' Greg.Date$ - Gregorian date in the form of MM-DD-YY or MM-DD-CCYY ' Value -------------------------------------------------------------------- ' If specified Gregorian date is either EMPTY or valid, i.e.: ' it has length either of 8 or 10 characters and ' it is DIGITAL (with the exception of date field delimiters) and ' month value lies within 1-12 and ' day number lies within range valid for the specified month ' (considering specified year leap characteristic when ' evaluating day range for February), ' then YY-DDD or CCYY-DDD (date in Julian format) is returned ' to the point of function invocation ' (where DDD is a day number within a year), ' else "" (empty string) is returned to the point of invocation. ' Notes -------------------------------------------------------------------- ' - Delimiters of parameter date fields are irrelevant and can be any ' symbols. Date fields are extracted from fixed positions. ' - EMPTY date is considered to be a valid one, and date in Julian ' format CCYY-DDD is returned for the CURRENT date (default). ' Examples ----------------------------------------------------------------- ' GRE2JUL$("" )=Current date in Julian format ' GRE2JUL$("02-29-1987")="" ' GRE2JUL$("01-01-87" )="87-001" ' GRE2JUL$("01-31-87" )="87-031" ' GRE2JUL$("02-28-87" )="87-059" ' GRE2JUL$("03-31-87" )="87-090" ' GRE2JUL$("04-30-87" )="87-120" ' GRE2JUL$("05-31-87" )="87-151" ' GRE2JUL$("06-30-87" )="87-181" ' GRE2JUL$("07-31-87" )="87-212" ' GRE2JUL$("08-31-87" )="87-243" ' GRE2JUL$("09-30-87" )="87-273" ' GRE2JUL$("10-31-87" )="87-304" ' GRE2JUL$("11-30-87" )="87-334" ' GRE2JUL$("12-31-87" )="87-365" ' GRE2JUL$("01-01-1988")="1988-001" ' GRE2JUL$("01-31-1988")="1988-031" ' GRE2JUL$("02-29-1988")="1988-060" ' GRE2JUL$("03-31-1988")="1988-091" ' GRE2JUL$("04-30-1988")="1988-121" ' GRE2JUL$("05-31-1988")="1988-152" ' GRE2JUL$("06-30-1988")="1988-182" ' GRE2JUL$("07-31-1988")="1988-213" ' GRE2JUL$("08-31-1988")="1988-244" ' GRE2JUL$("09-30-1988")="1988-274" ' GRE2JUL$("10-31-1988")="1988-305" ' GRE2JUL$("11-30-1988")="1988-335" ' GRE2JUL$("12-31-1988")="1988-366" ' External Functions ------------------------------------------------------- DECLARE FUNCTION LEAP% (Year$) DECLARE FUNCTION VALDGRE%(Spec.Date$) ' Start Function ----------------------------------------------------------- DEFINT A-Z ' All defaulted variables are integer FUNCTION GRE2JUL$(Greg.Date$) PUBLIC ' Check Date Validity and Handle Default Empty Date (Current) -------------- IF (LEN(Greg.Date$)=0) THEN DT$=DATE$ ELSEIF (VALDGRE%(Greg.Date$)) THEN DT$=Greg.Date$ ELSE GRE2JUL$="" EXIT FUNCTION END IF ' Parse Date to Be Converted ----------------------------------------------- Month=VAL(LEFT$(DT$,2)) Day =VAL( MID$(DT$,4,2)) Year$= MID$(DT$,7) ' Compute Julian Day Number ------------------------------------------------ DDD=Day+ _ VAL(MID$("000,031,059,090,120,151,181,212,243,273,304,334",4*Month-3,3))+ _ (Month>2)*(LEAP%(Year$)) ' Form and Return Julian Date Value to the Point of Invocation ------------- GRE2JUL$=Year$+"-"+RIGHT$("00"+LTRIM$(STR$(DDD)),3) ' Finish.Function ---------------------------------------------------------- END FUNCTION