Return number of days

 2 Replies
 0 Subscribed to this topic
 43 Subscribed to this forum
Sort:
Author
Messages
Chesca
Veteran Member Send Private Message
Posts: 490
Veteran Member
Hello, I was wondering if there is a function/API that calculates the difference between two dates and returns a number? I coded but I don't think it is calculating correctly. Any help would be greatly appeciated, thanks! Here is my code:

MOVE LPC-PRM-THRU-PROC-DATE TO WSDR-FR-DATE.
PERFORM 900-DATE-TO-JULIAN.
MOVE WSDR-JULIAN-DAYS TO WS-SYS-JULDATE.

*===CONVERT EMP ADJ HIRE DATE TO JULIAN DATE
MOVE EMP-ADJ-HIRE-DATE TO WSDR-FR-DATE.
PERFORM 900-DATE-TO-JULIAN.
MOVE WSDR-JULIAN-DAYS TO WS-HIRE-DATE-JULIAN.

*===CALCULATE DAYS
*===SUBTRACT EMP HIRE DATE FROM THE PAY PERIOD END DATE

COMPUTE LPC-DAYS = (WS-SYS-JULDATE - WS-HIRE-DATE-JULIAN).

DAYS Field is 3 bytes long for 365 days.
Chesca
Veteran Member Send Private Message
Posts: 490
Veteran Member
I found in the API doc, a function that calculate the number of calendar days difference between two specified dates. The number of days is always greater than zero.
900-NBR-DAYS-IN-DATE-RNG
900-NBR-DAYS-IN-DATE-RNG

So I modified my code to call this routine:
PERFORM 900-NBR-DAYS-IN-DATE-RNG.
IF(WSDR-ERROR-NBR = 0)
DISPLAY "NUMBER OF DAYS " WSDR-NBR-DAYS
MOVE WSDR-NBR-DAYS TO LPC-DAYS
ELSE
DISPLAY "CAN'T CALC LPC-DAYS, INVALID INPUT DATES"
GO TO 700-END.
TracyO
Veteran Member Send Private Message
Posts: 97
Veteran Member
Here is what we use in our pflow.js. Don't know if this will help you or not.

/************************************************************
Function: DateDiff

Purpose: Calculates the difference in days between two
JavaScript dates (absolute value)
************************************************************/
function DateDiff(jsDate1,jsDate2)
{
var time1 = jsDate1.getTime();
var newDate1 = new Date(time1);
var time2 = jsDate2.getTime();
var newDate2 = new Date(time2);

//gdw - the DateDiff function ignores time
newDate1.setHours(0);
newDate1.setMinutes(0);
newDate1.setSeconds(0);
newDate1.setMilliseconds(0);
newDate2.setHours(0);
newDate2.setMinutes(0);
newDate2.setSeconds(0);
newDate2.setMilliseconds(0);

var x = newDate1.getTime();
var y = newDate2.getTime();
var temp = x - y;
//gdw - return the absolute value
if (temp < 0) temp = temp*(-1);
//gdw - there are 86400000 milliseconds in a day
days = temp/86400000;
//days = '' + days;
return days;
}