Options

Calulating start/end dates for each month i.e. Jan

JamieBrownJamieBrown Member Posts: 107
Hi,

Does anyone know a way of calculating the start and end dates of each month in the current year?

Thanks in advance
Jamie

Answers

  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    Try this code:
    intYear := DATE2DMY(TODAY,3);
    FOR i := 1 TO 12 DO BEGIN
      datStartDate := DMY2DATE(1,i,intYear);
      datEndDate := CALCDATE('<+1M-1D>',datStartDate);
      MESSAGE('Month %1: %2 - %3',i,datStartDate,datEndDate);
    END;
    
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • David_CoxDavid_Cox Member Posts: 509
    David Cox wrote:
    Try this code:
    intYear := DATE2DMY(TODAY,3);
    FOR i := 1 TO 12 DO BEGIN
      datStartDate := DMY2DATE(1,i,intYear);
      datEndDate := CALCDATE('<+1M-1D>',datStartDate);
      MESSAGE('Month %1: %2 - %3',i,datStartDate,datEndDate);
    END;
    

    Or try
    datEndDate := CALCDATE('CM',datStartDate);

    Hi Jamie
    You might find these useful for reference as well
    '-CM' = First Day and 'CM' = Last Day
    You also have the same for week '-CW' and CW

    FirstDay := CALCDATE('-CM',TODAY);
    LastDay := CALCDATE('CM',TODAY);

    Dave
    Analyst Developer with over 17 years Navision, Contract Status - Busy
    Mobile: +44(0)7854 842801
    Email: david.cox@adeptris.com
    Twitter: https://twitter.com/Adeptris
    Website: http://www.adeptris.com
  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    David Cox wrote:
    datEndDate := CALCDATE('CM',datStartDate);
    Don't forget the multi-language aspect in your code, so you would better write
    datEndDate := CALCDATE('<CM>',datStartDate);
    
    so it works independant of the users language.
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • JamieBrownJamieBrown Member Posts: 107
    Thanks for all your help guys.

    Worked perfectly.

    Jamie
Sign In or Register to comment.