- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 09:54 AM
Hi,
I am trying to send the SLA Time to Resolve value in an email when an incident is opened.
I am using the following email script:
checkETA();
function checkETA() {
var encQuery = 'slaSTARTSWITHTTR^stage=in_progress';
var eta = new GlideRecord('task_sla');
eta.addQuery('task', current.sys_id);
eta.addEncodedQuery(encQuery);
eta.query();
while(eta.next()) {
template.print('Estimated time of resolution: ' + eta.planned_end_time.getDisplayValue());
}
}
However, what I am getting in the emails, regardless of the time zone of the customer who opened the incident, is:
Estimated time of resolution: 2016-10-21 23:55:31 IDT --> Israel Daylight Time
I thought eta.planned_end_time.getDisplayValue() should show the user's timezone
Any Idea why the correct information is not displayed?
Harel
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 05:13 PM
Hi Harel - I get it. Would you please run this and see what you get? I think this will give us a clue:
// print eta.planned_end_time
template.print(eta.planned_end_time);
template.print(eta.planned_end_time.getDisplayValue());
// print GlideDateTime(eta.planned_end_time)
var gdt = new GlideDateTime(eta.planned_end_time);
template.print('GlideDateTime(eta.planned_end_time)');
template.print(gdt);
template.print(gdt.getDisplayValue());
// set user timezone
var timezone = Packages.java.util.TimeZone.getTimeZone(current.caller_id.time_zone);
gdt.setTZ(timezone);
template.print('set user timezone');
template.print(gdt);
template.print(gdt.getDisplayValue());
// print GlideDateTime(eta.planned_end_time.getDislayValue())
var gdt = new GlideDateTime(eta.planned_end_time.getDislayValue());
template.print('GlideDateTime(eta.planned_end_time).getDislayValue()');
template.print(gdt);
template.print(gdt.getDisplayValue());
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 10:02 AM
Hi Harel,
What you need to do is to use the GlideDateTime class to grab the user's time zone (getUserTimeZone()) and the related time in the user's timezone.
http://wiki.servicenow.com/?title=GlideDateTime#gsc.tab=0
Thanks,
Berny
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 12:03 PM
Hi Berny,
I am getting somewhere...
Changed my script to this:
var timezone = Packages.java.util.TimeZone.getTimeZone(current.caller_id.time_zone);
var gdt = new GlideDateTime(eta.planned_end_time.getDisplayValue());
gdt.setTZ(timezone);
template.print(gdt + '<br \>');
And the output is:
2016-10-24 18:44:15 --> no time zone abbreviation there.
if I use gdt.getDisplayValue() I get the wrong time, with the abbreviation, for instance: 13:44:15 CDT
Edit:
using instead:
var gdt1 = new GlideDateTime(eta.planned_end_time.getDisplayValue());
template.print(gdt1 + '<br \>');
gives the same results - correct time but no abbreviation.
harel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 12:45 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-14-2016 12:51 PM
You may need to add line 2:
var gdt = new GlideDateTime(eta.planned_end_time);
gdt.setTZ(timezone);
- template.print(gdt.getDisplayValue() + '<br \>');