Time Field Comparison
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-09-2022 08:06 PM
Hello All,
We have a requirement to compare current time with 2 time (not date/time) fields of custom table. If the current time is in between the above two time fields. We have used following logic which is mostly working fine but sometime not working fine for system time zone. Could anyone help me with this?
Logic used:
var currentTime = new GlideDateTime().getLocalTime().getDisplayValueInternal(); // Get Current Local Time
var begTime = new GlideDateTime(grHRAssociate.u_beginning_time).getLocalTime().getDisplayValueInternal();
var endTime = new GlideDateTime(grHRAssociate.u_end_time).getLocalTime().getDisplayValueInternal();
if ( currentTime >= begTime && currentTime <= endTime &&) {
agents.push(grHRAssociate.u_hr_associate.toString());
}
Thank you!
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-11-2022 09:24 AM
Hi Megha,
Did you try this?
Thanks.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-09-2022 11:17 PM
The problem probably happens when the day changes. Instead of using local time to compare, I've used UTC because it'll take care of timezone including day light saving. I'm also using .getNumericValue() in comparision because date format may differ depending on date format setting.
var gtCurrent = new GlideDateTime();
var startTime = grHRAssociate.u_beginning_time;
var endTime = grHRAssociate.u_end_time;
var gtStart = new GlideDateTime(gtCurrent.getDate() + ' ' + startTime);
var gtEnd = new GlideDateTime(gtCurrent.getDate() + ' ' + endTime);
if (gtCurrent.getNumericValue() >= gtStart.getNumericValue() && gtCurrent.getNumericValue() <= gtEnd.getNumericValue()) {
agents.push(grHRAssociate.u_hr_associate.toString());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-10-2022 12:16 AM
It is giving same value for gtStart.getNumericValue() and gtEnd.getNumericValue(), hence it is not comparing it correctly

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-12-2022 06:17 AM
Megha, check if the values passed to the script is correct. I've inserted a log to check the values.
Unless the times are the same, getNumericValue() should be different.
var gtCurrent = new GlideDateTime();
var startTime = grHRAssociate.u_beginning_time;
var endTime = grHRAssociate.u_end_time;
gs.info('startTime:' + startTime + ' endTime:' + endTime);
var gtStart = new GlideDateTime(gtCurrent.getDate() + ' ' + startTime);
var gtEnd = new GlideDateTime(gtCurrent.getDate() + ' ' + endTime);
gs.info('gtStart:' + gtStart + ' gtEnd:' + gtEnd);
gs.info('numericValue() - gtCurrent:' + gtCurrent.getNumericValue() + ' gtStart:' + gtStart.getNumericValue() + ' gtEnd:' + gtEnd.getNumericValue());
if (gtCurrent.getNumericValue() >= gtStart.getNumericValue() && gtCurrent.getNumericValue() <= gtEnd.getNumericValue()) {
agents.push(grHRAssociate.u_hr_associate.toString());
}
Also, try running the script in background script.
e.g.
var gtCurrent = new GlideDateTime();
var startTime = '09:00:00';
var endTime = '18:00:00';
gs.info('startTime:' + startTime + ' endTime:' + endTime);
var gtStart = new GlideDateTime(gtCurrent.getDate() + ' ' + startTime);
var gtEnd = new GlideDateTime(gtCurrent.getDate() + ' ' + endTime);
gs.info('gtStart:' + gtStart + ' gtEnd:' + gtEnd);
gs.info('numericValue() - gtCurrent:' + gtCurrent.getNumericValue() + ' gtStart:' + gtStart.getNumericValue() + ' gtEnd:' + gtEnd.getNumericValue());
Sample result. Values of gtStart and gtEnd are different.
*** Script: startTime:09:00:00 endTime:18:00:00
*** Script: gtStart:2022-03-12 09:00:00 gtEnd:2022-03-12 18:00:00
*** Script: numericValue() - gtCurrent:1647094439977 gtStart:1647075600000 gtEnd:1647108000000

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-12-2022 06:43 AM
Megha, my bad.
.getTime() is returning actually also returning a date/time with date set to 1970-01-01. It's necessary to remove the date part.
var gtCurrent = new GlideDateTime();
var startTime = grHRAssociate.u_beginning_time;
var endTime = grHRAssociate.u_end_time;
startTime = startTime.split(' ')[1]; // remove the date part '1970-01-01'
endTime = endTime.split(' ')[1];
var gtStart = new GlideDateTime(gtCurrent.getDate() + ' ' + startTime);
var gtEnd = new GlideDateTime(gtCurrent.getDate() + ' ' + endTime);
if (gtCurrent.getNumericValue() >= gtStart.getNumericValue() && gtCurrent.getNumericValue() <= gtEnd.getNumericValue()) {
agents.push(grHRAssociate.u_hr_associate.toString());
}