Thursday, May 27, 2021

Calculate the difference between two dates - Javascript

 

Calculate the difference between two dates

There are multiple options to calculate the difference between dates.

1. getDateDiff

The easiest approach is to use getDateDiff. See this calculation:

getDateDiff('{date2}','{date1}','y')

In this calculation:

  • '{date2}'  = the variable name of the date field that contains the most recent date 
  • '{date1}' = the variable name of the date field with the older date
  • 'y' = the unit in which the difference is returned, i.e. 'years' in this case

Replace date1 and date2 with your own variable names. Make sure to keep the '{ }' (curly brackets surrounding the variables and the quotation marks). You can change 'y' to any unit you want to use:

  • Year: 'y'
  • Day: 'd'
  • Hour: 'h'
  • Minutes: 'm'


2. Date difference with Moment objects  

You can also create Moment objects and then calculate the difference:  

var admission = moment('{date1}', 'DD-MM-YYYY'); 
var discharge = moment('{date2}', 'DD-MM-YYYY');
discharge.diff(admission, 'days');

Instead of days you can also use: 'months' or 'years', or 'weeks' depending on what you want to measure. Check this template in the calculation helper.  


3. Date difference with today

You can also calculate the difference between now (today) and a date of choice, e.g. if you want to know how many days passed between today and the date the patient had their last visit:

var dateofvisit = moment('{visit}', 'DD-MM-YYYY');
var today = moment();
today.diff(dateofvisit, 'days');

In this calculation '{visit}' is the variable name of the date of the visit. Replace this variable with your own variable. Check this template in the calculation helper.

Note: This calculation will always update when you open the step where it is located in a record, since it calculates the actual moment at the time you are in that step.


4.  Converting number of days to number of weeks and days

If the number of days is known, it is possible to easily convert the number of days to the number of the weeks with the following template:

var amountWeeks = {amountDays}/7
var remainingDays = {amountDays}%7;
remainingDays = remainingDays.toFixed(0)
Math.floor(amountWeeks) + " weeks, " + (remainingDays) + " days"

In this calculation {amountDays} is the variable in which the number of days is collected. Test this template using calculation helper.


5. Calculating the difference between two dates using date and time field

If you are using a date and time field and would like to output the difference between the two dates in days, hours and minutes, use the following template:

var m1 = moment('{admission}', 'DD-MM-YYYY HH:mm'); 
var m2 = moment('{discharge}', 'DD-MM-YYYY HH:mm'); 
var m3 = m2.diff(m1,'minutes'); 
var m4 = m2.diff(m1,'h'); 


var numdays = Math.floor(m3 / 1440); 
var numhours = Math.floor((m3 % 1440) / 60); 
var numminutes = Math.floor((m3 % 1440) % 60); 
numdays + " day(s) " + numhours +"h " + numminutes +"m";