- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-23-2021 02:26 AM
Hi all,
I have a requirement of calculating the age in years and months based on a date of birth field:
Age is a single line text variable and is read only. It should populate age based on date of birth in a format like : example : 5 years 4 months.
I am not knowledgable to glide date functions. Can someone help me with a script for this?
Thanks in advance!
Solved! Go to Solution.
- Labels:
-
Script Debugger
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-26-2021 10:56 PM
Hi,
I don't find issue in my instance. Please share me the date you are passing and the output you get along with the alert details.
I removed some unwanted text in the code. You can use this:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
g_form.setVisible('certification_one',false);
g_form.hideFieldMsg('claim_dependency',true);
g_form.hideFieldMsg('insurance_plan',true);
}
var ageArr = newValue.split(" year");
var ageYear = 0;
if(ageArr.length > 1){
ageYear = parseInt(ageArr[0]);
alert('1 '+ageYear);
}
if(newValue != "21 years" && ageYear >= 21){
alert(ageYear);
g_form.setVisible('certification_one',true);
g_form.setMandatory('certification_one',true);
g_form.showFieldMsg('claim_dependency','Dependency ends at the 21st birthday unless your child is eligible for special allowance. See more information here.','info',true);
g_form.showFieldMsg('insurance_plan','A child can be enrolled in insurance up until the calendar year in which they turn 25 unless employed or married. Please confirm below.','info',true);
}
else{
g_form.setMandatory('certification_one',false);
g_form.setVisible('certification_one',false);
g_form.hideFieldMsg('claim_dependency',true);
g_form.hideFieldMsg('insurance_plan',true);
}
}
Palani

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-23-2021 02:34 AM
Hi Anshi,
There already exists a solution for this in one of other thread. Refer link for a check & update it with the variables you using accordingly.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-23-2021 02:46 AM
Hi
I need it in '7 years 5 months' (example)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-23-2021 03:44 AM
Hi,
can you check this link;
this might help you to do in your format
1) get the difference and then use this
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-23-2021 04:26 AM
Please check the below sample script which worked for me
1) Pass the date from client to server in ajax and then do that
Script: Date of Birth 25th Nov 2000
var date = '2000-11-25';
var dt = new GlideDate();
dt.setValue(date);
var newFormat = dt.getByFormat("MMM dd, yyyy");
var diff = Date.now() - Date.parse(newFormat);
var seconds = Math.floor(diff/1000);
var minutes = Math.floor(seconds/60);
var hours = Math.floor(minutes/60);
var days = Math.floor(hours/24);
var months = Math.floor(days/30);
var years = Math.floor(days/365);
seconds %= 60;
minutes %= 60;
hours %= 24;
days %= 30;
months %= 12;
gs.info("Years->" + years);
gs.info("Months->" + months);
Output:
Actual: Compare with online tool
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader