- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 03:04 AM
Hi All,
I have two seperate dates in the format of DD-MMM-YYYY that i need to calculate the difference off. I need the answer to be in days. What's the best way to achieve this as i'm using a client script i cannot use anything gs.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 05:17 AM
Hi Alex,
Try this
Client script:
function onChange(control, oldValue, newValue, isLoading) {
var strt = g_form.getValue('<start_field>');//set this as purchase date
var end = g_form.getValue('<end_field>');//set this as repair date
var ajax = new GlideAjax('AjaxDurCalc');
ajax.addParam('sysparm_name','durCalc');
ajax.addParam('sysparm_strt',strt);
ajax.addParam('sysparm_end',end);
ajax.getXMLWait();
var answer = ajax.getAnswer();
g_form.setValue('<duration_field>', answer);
}
Script include
Name:AjaxDurCalc
Client callable:checked,client:checked
script:
var AjaxDurCalc = Class.create();
AjaxDurCalc.prototype = Object.extendsObject(AbstractAjaxProcessor, {
durCalc: function() {
return gs.dateDiff(this.getParameter('sysparm_strt'),this.getParameter('sysparm_end'), false);
}
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 03:15 AM
Hi Alex,
Please refer this wiki link section 3.1
http://wiki.servicenow.com/index.php?title=Setting_the_Duration_Field_Value
I hope this helps
Thanks
Pradeep Sharma
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 03:25 AM
Hi Pradeep.
As present both of these dates are read only string fields.
Purchase Date: DD-MMM-YYYY & Life End Date: DD-MMM-YYYY
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 03:29 AM
There are no defined methods for calculating date fields on the client as far as I'm aware. The way I had to handle this previously was to use a Glide Ajax call to a server-side script include, which would handle the comparison and return a string value. It's a little tricky to set up if you've never done it, but the wiki gives a pretty good explanation of the concept:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2014 03:27 AM
Hi Alex,
Here is the Solution.
There is OOB fumction "dateDiff(String, String, boolean) "
You can use it as follows.
// Given two date/times as strings
var dateString1 = '2014-01-01 12:00:00';
var dateString2 = '2014-01-01 13:00:00';
// Determine the difference as number of seconds (returns a string)
var diffSeconds = gs.dateDiff(dateString1, dateString2, true);
// JavaScript will coerce diffSeconds from a string to a number
// since diffSeconds is being compared to a number
if (diffSeconds <= 0) {
gs.print(dateString1 + ' is on or after ' + dateString2);
} else {
gs.print(dateString1 + ' is before ' + dateString2);
}
You can also visit wiki page
GlideSystem Date and Time Functions - ServiceNow Wiki
Please mark this answer as Correct/Helpfull if it was really helpful for you.
Regards,
Solutioner
Enhance Knowledge NOW@ www.solutioningnow.com
http://www.solutioningnow.com/