Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Glide Schedule and TimeZone

rad2
Mega Sage

When using a schedule and calculating the duration between a start and end time in a timezone, it always considers UTC. even when using TimeZone when defining a GlideSchedule. Adding the script below

var sched = new GlideSchedule('qwdfghjuhytfgdsew3245etrygh');
var start = "2025-02-18 13:30:00"
var end = "2025-02-18 19:30:00"
var startTime = new GlideDateTime(start);
var endTime = new GlideDateTime(end);
sched.setTimeZone('Europe/Berlin');
gs.debug(sched.duration(startTime, endTime));
 
response is  00:30:00
But my schedule starts from 20:00:00pm to 23:59:59pm
7 REPLIES 7

PopithaK
Tera Contributor

Hi @rad2 

 

var sched = new GlideSchedule('qwdfghjuhytfgdsew3245etrygh');
var start = "2025-02-18 13:30:00"
var end = "2025-02-18 19:30:00"
var startTime = new GlideDateTime(start);
var endTime = new GlideDateTime(end);
sched.setTimeZone('Europe/Berlin');
endTime.setTimeZone('Europe/Berlin');
gs.debug(sched.duration(startTime, endTime));
Could you please try like this.



 

PopithaK
Tera Contributor

Hi @rad2 

 

var sched = new GlideSchedule('qwdfghjuhytfgdsew3245etrygh');
var start = "2025-02-18 13:30:00"
var end = "2025-02-18 19:30:00"
var startTime = new GlideDateTime(start);
var endTime = new GlideDateTime(end);
startTime.setTZ('Europe/Berlin');  
endTime.setTimeZone('Europe/Berlin');
sched.setTimeZone('Europe/Berlin');
gs.debug(sched.duration(startTime, endTime));
Could you please try like this.

I get this error when i try it 

Script execution error: Script Identifier: null.null.script, Error Description: Can't find method com.glide.glideobject.GlideDateTime.setTZ(string). (null.null.script; line 19), Script ES Level: 0

sunil maddheshi
Tera Guru

@rad2 

Convert Your Start & End Time to UTC Before Calculation

Since GlideSchedule works in UTC, manually convert your times to UTC before passing them to duration().

 

var sched = new GlideSchedule('qwdfghjuhytfgdsew3245etrygh'); // Replace with your schedule sys_id
var timeZone = 'Europe/Berlin';

// Convert input times to UTC
var start = new GlideDateTime("2025-02-18 13:30:00");
start.setTZ(timeZone);
gs.info("Start UTC: " + start.getValue()); 

var end = new GlideDateTime("2025-02-18 19:30:00");
end.setTZ(timeZone);
gs.info("End UTC: " + end.getValue());

// Calculate duration using the correct UTC times
var duration = sched.duration(start, end);
gs.info("Duration: " + duration);

 

Please mark helpful/correct if this helps you!