Microsoft KB Archive/106690

From BetaArchive Wiki
Knowledge Base


Function for Returning a Julian Date in FoxPro

Article ID: 106690

Article Last Modified on 12/1/2003



APPLIES TO

  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft FoxPro 2.0
  • Microsoft FoxPro 2.5b for MS-DOS
  • Microsoft FoxPro 2.5a
  • Microsoft FoxPro 2.5b for MS-DOS
  • Microsoft FoxPro 2.5b
  • Microsoft FoxPro 2.5a
  • Microsoft FoxPro 2.5b



This article was previously published under Q106690

SUMMARY

The FoxPro functions SYS(1) and SYS(11) return a Julian day number, which is different from a Julian date. To return a Julian date, you can write a user-defined function (UDF), as described below.

MORE INFORMATION

SYS(1) and SYS(11) return a date according to the Julian calendar, in which each day is counted, with day 1 being in 4713 B.C. On the other hand, a Julian date is a date represented by a five-digit number, the first two digits being the last two digits of the year, and the final three digits being the number of days that have elapsed since January 1 of that year. For example, 01/01/93 according to the Julian calendar is 2448989, whereas the Julian date is 93001.

The following program calls a UDF that converts a date in FoxPro date format to a Julian date.

   * Begin program
   @1,1 SAY "Enter a date" GET testdate DEFAULT {  /  /  }
   READ
   @2,1 SAY "The Julian Date of "+ DTOC(testdate) + " is " ;
      + TRANSFORM(julian(testdate),'99999')
   *End program

   FUNCTION julian
   PARAMETER tdate

   *isolate the year and convert it to a string
   cYear = RIGHT(DTOC(tdate),2)
   firstjan = CTOD("01/01/" + cYear)

   *calculate the sequential number of the day
   jday = tdate-firstjan+1

   *position the year at the two leftmost digits
   nYear = VAL(cYear) * 1000

   *combine year and day number
   jdate = nYear + jday

   RETURN jdate
   *End Function julian
                


Additional query words: VFoxWin FoxDos FoxWin format

Keywords: kbcode KB106690