new GlideDateTime()
# The current date and time. Pass a value in UTC ("yyyy-MM-dd HH:mm:ss") to create a specific moment.
var now = new GlideDateTime();
var fixed = new GlideDateTime('2026-10-18 09:00:00'); // UTC GlideDateTime stores date-time values in UTC and shows them in the user’s time zone. Use it instead of JavaScript Date on the server.
new GlideDateTime()The current date and time. Pass a value in UTC ("yyyy-MM-dd HH:mm:ss") to create a specific moment.
var now = new GlideDateTime();
var fixed = new GlideDateTime('2026-10-18 09:00:00'); // UTC getValue() / getDisplayValue()getValue() gives the UTC value in the internal format; getDisplayValue() gives the user's time zone and date format.
var now = new GlideDateTime();
gs.info(now.getValue()); // UTC, yyyy-MM-dd HH:mm:ss
gs.info(now.getDisplayValue()); // user's time zone and format new GlideDateTime(record.getValue(field))Reads a date-time field into a GlideDateTime.
var opened = new GlideDateTime(current.getValue('opened_at')); addDaysLocalTime(n) / addDaysUTC(n) / addSeconds(n)Adds time. LocalTime methods follow the user's time zone (and daylight saving); UTC methods do not.
var due = new GlideDateTime();
due.addDaysLocalTime(3);
due.addSeconds(3600);
current.setValue('due_date', due.getValue()); addDays() is deprecated; use addDaysLocalTime() or addDaysUTC(). Use negative numbers to go back.
before(gdt) / after(gdt) / compareTo(gdt)Compares two date-times. compareTo() returns -1, 0 or 1.
var due = new GlideDateTime(current.getValue('due_date'));
if (due.before(new GlideDateTime())) {
current.setValue('u_overdue', true);
} GlideDateTime.subtract(start, end)Returns the time between two date-times as a GlideDuration.
var opened = new GlideDateTime(current.getValue('opened_at'));
var duration = GlideDateTime.subtract(opened, new GlideDateTime());
gs.info('Open for ' + duration.getDisplayValue()); getNumericValue()Milliseconds since 1 January 1970 (UTC). Handy for quick arithmetic.
var start = new GlideDateTime(current.getValue('opened_at'));
var hours = (new GlideDateTime().getNumericValue() - start.getNumericValue()) / 3600000; new Date() runs in the server time zone and does not understand ServiceNow date formats or user time zones. GlideDateTime handles both.