Skip to content

Commit 74823be

Browse files
Create script.js
1 parent 2e48dd0 commit 74823be

File tree

1 file changed

+54
-0
lines changed
  • Server-Side Components/Server Side/calculate difference between two dates in years, months, and days

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* Get the age difference between two dates in years, months, and days.
3+
*
4+
* @param {GlideDateTime} startDate - The earlier date (e.g., birthdate).
5+
* @param {GlideDateTime} endDate - The later date (e.g., today).
6+
* @returns {Object} { years: number, months: number, days: number }
7+
*/
8+
function getAgeYMD(startDate, endDate) {
9+
10+
var start = new GlideDateTime(startDate);
11+
var end = new GlideDateTime(endDate);
12+
13+
// Extract components
14+
var sYear = parseInt(start.getYearUTC(), 10);
15+
var sMonth = parseInt(start.getMonthUTC(), 10);
16+
var sDay = parseInt(start.getDayOfMonthUTC(), 10);
17+
18+
var eYear = parseInt(end.getYearUTC(), 10);
19+
var eMonth = parseInt(end.getMonthUTC(), 10);
20+
var eDay = parseInt(end.getDayOfMonthUTC(), 10);
21+
22+
var years = eYear - sYear;
23+
var months = eMonth - sMonth;
24+
var days = eDay - sDay;
25+
26+
// Adjust if negative
27+
if (days < 0) {
28+
months--;
29+
var temp = new GlideDateTime(end);
30+
temp.addMonthsUTC(-1);
31+
days += temp.getDaysInMonthUTC();
32+
}
33+
34+
if (months < 0) {
35+
years--;
36+
months += 12;
37+
}
38+
39+
return {
40+
years: years,
41+
months: months,
42+
days: days
43+
};
44+
}
45+
46+
// Example usage:
47+
// var birthdate = new GlideDateTime("1997-06-19 00:00:00");
48+
// var today = new GlideDateTime(); // current date
49+
// var age = getAgeYMD(birthdate, today);
50+
51+
// gs.info("Age: " + age.years + " years, " + age.months + " months, " + age.days + " days");
52+
53+
// Output
54+
// Age: 28 years, 3 months, 14 days

0 commit comments

Comments
 (0)