calculate the last day of the month

Casper

ProgressTalk.com Moderator
Staff member
from the KB:
Code:
FUNCTION getLastDayOfMonth RETURNS DATE(INPUT ipdDate AS DATE)
FORWARD.
 
MESSAGE
  getLastDayOfMonth(TODAY) "~n"
  getLastDayOfMonth(01/30/2003) "~n"
  getLastDayOfMonth(12/30/2004)
  VIEW-AS ALERT-BOX INFO BUTTONS OK.
FUNCTION getLastDayOfMonth RETURNS DATE(INPUT ipddate AS DATE):
 
RETURN ADD-INTERVAL (ipddate, 1, 'Month') - DAY(ADD-INTERVAL
(ipddate, 1, 'Month')).
 
END FUNCTION.

Casper.
 

alok_mits

New Member
DEFINE VARIABLE v-date-last-date AS DATE NO-UNDO.
ASSIGN v-date-last-date = 12/12/2008 .

PROCEDURE GET_last_day:
DEFINE INPUT-OUTPUT PARAMETER p-inp-out-date AS DATE NO-UNDO.
DEFINE VARIABLE v-cha-date AS CHARACTER NO-UNDO.

ASSIGN v-cha-date = STRING((IF MONTH(p-inp-out-date) < 12 THEN MONTH(p-inp-out-date) ELSE 0) + 1 ) + "/01"
+ "/" + STRING(IF MONTH(p-inp-out-date) < 12 THEN YEAR(p-inp-out-date) ELSE (YEAR(p-inp-out-date) + 1))


p-inp-out-date = DATE(v-cha-date) - 1.
END PROCEDURE.

RUN GET_last_day ( INPUT-OUTPUT v-date-last-date).

MESSAGE "LAST DAY" SKIP v-date-last-date
VIEW-AS ALERT-BOX INFO BUTTONS OK.

I am not good in OE so..its for older version
 
DEFINE VARIABLE v-date-last-date AS DATE NO-UNDO.
ASSIGN v-date-last-date = 12/12/2008 .

PROCEDURE GET_last_day:
DEFINE INPUT-OUTPUT PARAMETER p-inp-out-date AS DATE NO-UNDO.
DEFINE VARIABLE v-cha-date AS CHARACTER NO-UNDO.

ASSIGN v-cha-date = STRING((IF MONTH(p-inp-out-date) < 12 THEN MONTH(p-inp-out-date) ELSE 0) + 1 ) + "/01"
+ "/" + STRING(IF MONTH(p-inp-out-date) < 12 THEN YEAR(p-inp-out-date) ELSE (YEAR(p-inp-out-date) + 1))


p-inp-out-date = DATE(v-cha-date) - 1.
END PROCEDURE.

RUN GET_last_day ( INPUT-OUTPUT v-date-last-date).

MESSAGE "LAST DAY" SKIP v-date-last-date
VIEW-AS ALERT-BOX INFO BUTTONS OK.

I am not good in OE so..its for older version

Doesn't work for me, presumably because the date format is different (caused by use of STRING to manipulate date components?), though I'm not up to verifying that at the moment.

Anyway, old versions discussed here.
 

jongpau

Member
I do this... simple and it works:
Code:
FUNCTION lastDay RETURNS DATE (INPUT dDate AS DATE):
    IF dDate EQ ? THEN RETURN ?.
    IF month(dDate) = 12 THEN RETURN DATE(12,31,YEAR(dDate)).
    RETURN DATE(MONTH(dDate) + 1,1,YEAR(dDate)) - 1.
END FUNCTION.
MESSAGE lastDay(date(01,01,2008)).
Paul
 

hakane

New Member
What I'm using is:

Function MonthEnd Returns Date ( Input inDate As Date):
Return ((Date(Month(inDate),28,Year(inDate)) + 4) - Day(Date(Month(inDate),28,Year(inDate)) + 4)).
End.

Disp MonthEnd(Today).
 

saratht

New Member
Date-Error:
DO l-count = 0 TO 5:
ASSIGN
l-StopDate = DATE(iStartMonth, 31 - l-count, iStartYear) NO-ERROR
.
IF NOT ERROR-STATUS:ERROR THEN
LEAVE.
END.
 
Top