- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-24-2022 08:14 AM
I am trying to compare 2 Glide Date Times via script include:
var answer;
var dueDate = this.getParameter("sysparm_time");
gs.info("dueDate: " + dueDate);
var nowPlus2Hours = new GlideDateTime(gs.nowDateTime());
var hours = (60 * 60) * 2;
nowPlus2Hours.addSeconds(hours);
gs.info("nowPlus2Hours: " + nowPlus2Hours);
if (dueDate.getDisplayValue() < nowPlus2Hours.getDisplayValue()) {
answer = false;
} else {
answer = true;
}
return answer;
As you can see, if the due date is less than nowPlus2Hours, it should return false. As it is currently, the script include is always returning true.
Output in the logs: (As you can see, the dueDate is less than nowPlus2Hours, which means the script should return false. Instead, it is returning true)
nowPlus2Hours: 2022-02-24 13:12:30
dueDate: 2022-02-24 06:00:00 AM
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2022 08:20 AM
I was able to run a check to see if the due date was AM or PM. If it was PM, I added 12 hours to the dueDate variable. It worked after that.
var answer;
var dueDate = new GlideDateTime(this.getParameter("sysparm_time"));
var AMorPM = dueDate.indexOf("PM");
if (AMorPM != -1) {
var add12Hours = (60 * 60) * 12;
dueDate.addSeconds(add12Hours);
}
var nowPlus2Hours = new GlideDateTime(gs.nowDateTime());
var hours = (60 * 60) * 2;
nowPlus2Hours.addSeconds(hours);
if (dueDate.compareTo(nowPlus2Hours) != -1) {
answer = "true";
} else {
answer = "false";
}
return answer;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-24-2022 08:31 AM
Hi
Methid getDisplayValue() returns a String and that is not comparable.
Instead use getNumericValue() which returns a numeric value:
if (dueDate.getNumericValue() < nowPlus2Hours.getNumericValue()) {
}
Kind regards
Maik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-24-2022 07:48 PM
Hi,
this should work fine
var answer;
var dueDate = new GlideDateTime(this.getParameter("sysparm_time")); // initialize and set value
var nowPlus2Hours = new GlideDateTime(); // no need to pass now time
var hours = (60 * 60) * 2;
nowPlus2Hours.addSeconds(hours);
if (dueDate < nowPlus2Hours) {
answer = false;
} else {
answer = true;
}
return answer;
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
‎03-01-2022 09:59 AM
Unfortunately, this is not working. It looks like it is not converting the due date to 24 hour format.
var answer;
dueDate = new GlideDateTime(this.getParameter("sysparm_time"));
var nowPlus2Hours = new GlideDateTime(); // no need to pass now time
var hours = (60 * 60) * 2;
nowPlus2Hours.addSeconds(hours);
gs.info("dueDate: " + dueDate);
gs.info("nowPlus2Hours: " + nowPlus2Hours);
if (dueDate < nowPlus2Hours) {
answer = false;
} else {
answer = true;
}
return answer;
Here is the output in the logs:
dueDate: 2022-03-01 04:51:22 <--- This is PM, so it should be 16:51
nowPlus2Hours: 2022-03-01 15:55:50
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-01-2022 07:19 PM
Hi,
the script is comparing time in GMT so it should work fine
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader