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!