DateAdd function to Convert to Future Date and Past Date

Here you can talk about anything related to BBC BASIC, not covered in another category
ivega718
Posts: 15
Joined: Fri 15 Jun 2018, 20:28

DateAdd function to Convert to Future Date and Past Date

Post by ivega718 »

Sample to Add days or Substract Days to a Date using a delimit for date.

Code: Select all

      INSTALL @lib$+"DATELIB"
      INSTALL @lib$+"STRINGLIB"

      REM Add Future Date
      date1$="01/01/2019"
      date2$=FN_DateAdd(date1$,15,"/")
      PRINT "Add 15 Days to date: "+date1$+" = "+date2$


      REM Substract date using negative value in days
      date1$="01/01/2019"
      date2$=FN_DateAdd(date1$,-15,"/")
      PRINT "Substract 15 Days to date: "+date1$+" = "+date2$


      END

      DEF FN_DateAdd(date$,days%,delimit$)
      Day%=VAL(FN_word(date$,delimit$,1))
      Month%=VAL(FN_word(date$,delimit$,2))
      Year%=VAL(FN_word(date$,delimit$,3))
      MJD%=FN_mjd(Day%, Month%, Year%)
      MJD%=MJD%+days%
      Date2$=FN_date$(MJD%,"dd"+delimit$+"MM"+delimit$+"yyyy")
      =Date2$


     REM This function thanks to Richard Rusell I have include in STRINGLIB.BBC
      DEF FN_word(a$, delimit$, n%)
      PRIVATE a$(), p$, c%
      IF p$<>a$ p$ = a$ : c% = FN_split(p$, delimit$, a$())
      IF n%<1 OR n%>c% THEN = ""
      = a$(n%-1)


Edja
Posts: 64
Joined: Tue 03 Apr 2018, 12:07
Location: Belgium

Re: DateAdd function to Convert to Future Date and Past Date

Post by Edja »

DATELIB already contains already the functionality you are looking for without having to use STRINGLIB.
Is this an alternative ? A shorter one ?
Or am I missing something ? (wouldn't be the first time) ;)

Edja

Code: Select all

      INSTALL @lib$+"DATELIB"

      REM Add Future Date
      date1$="01/01/2019"
      date2$=FN_DateAdd(date1$,15,"/")
      PRINT "Add 15 Days to date: "+date1$+" = "+date2$

      REM Substract date using negative value in days
      date1$="01/01/2019"
      date2$=FN_DateAdd(date1$,-15,"/")
      PRINT "Substract 15 Days to date: "+date1$+" = "+date2$
      END

      DEFFN_DateAdd(date$,days%,dl$)
      =FN_date$(FN_readdate(date$,"dmy",0)+days%,"dd"+dl$+"MM"+dl$+"yyyy")
ivega718
Posts: 15
Joined: Fri 15 Jun 2018, 20:28

Re: DateAdd function to Convert to Future Date and Past Date

Post by ivega718 »

There is no such function but obviously DATELIB has the necessary functions to obtain it.
ivega718
Posts: 15
Joined: Fri 15 Jun 2018, 20:28

Re: DateAdd function to Convert to Future Date and Past Date

Post by ivega718 »

I did not know it was possible to add or subtract days to the FN_date$ function with FN_readdate in that way.

FN_date$ for format and FN_readdate for add or substract days.

Code: Select all

 =FN_date$(FN_readdate(date$,"dmy",0)+days%,"dd"+dl$+"MM"+dl$+"yyyy")
Thanks