How to convert DateTime based on Requester's TimeZone

Pooja Magadum1
Tera Expert

Hello,

I want to convert DateTime value which would be based on requester's TimeZone.

If my TimeZone is IST and requester's TimeZone is 'America/New York' then I should see 'America/New York' time in RITM variable.

I have written a code like below:

OnLoad Client Script on RITM table :

function onLoad() {
var dateTime = g_form.getValue('variables.access_start').toString();
var getSysID = g_form.getUniqueValue();

var gaGetTimeZone = new GlideAjax('ShowDateTimeOfRequester');
gaGetTimeZone.addParam('sysparm_name','updateDateTime');
gaGetTimeZone.addParam('ritm_sys_id',getSysID);
gaGetTimeZone.addParam('selected_date',dateTime);
gaGetTimeZone.getXML(setDateTimeOfRequester);

function setDateTimeOfRequester(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert('Answer return ' +answer);
g_form.setValue('access_start',answer);
}
}


Script Include :

var ShowDateTimeOfRequester = Class.create();
ShowDateTimeOfRequester.prototype = Object.extendsObject(AbstractAjaxProcessor, {

updateDateTime: function() {
var requester, time ;
var selectedDate = this.getParameter('selected_date');
var ritmSysID = this.getParameter('ritm_sys_id');
var grReqItem = new GlideRecord('sc_req_item');
grReqItem.addQuery('sys_id',ritmSysID);
grReqItem.query();
if(grReqItem.next()) {
requester = grReqItem.request.requested_for;
}
var user = new GlideRecord('sys_user');
user.query('sys_id',requester);
user.query();
if(user.next()) {
time = new GlideDateTime(selectedDate);
gs.addInfoMessage('First Time ' +time);
var tz = Packages.java.util.TimeZone.getTimeZone(user.time_zone);
time.setTZ(tz);
gs.addInfoMessage('Requester Time is ' +time);

gs.addInfoMessage('Requester Display Time is ' +time.getDisplayValue());
}
return time;
},
type: 'ShowDateTimeOfRequester'
});


But its not working 😞
Please provide any solution.
Awaiting for your response.

--
Thanks,
Pooja

1 ACCEPTED SOLUTION

Shashi Bhushan
Kilo Guru

https://community.servicenow.com/community?id=community_question&sys_id=b28a4fe9db5cdbc01dcaf3231f96192b

 

 

Thanks

Please mark correct/helpful.

View solution in original post

5 REPLIES 5

Chris Sanford1
Kilo Guru

I'm pretty sure it automatically does this out of box? I just tested in my developer instance. If you impersonate a user with a different time zone it automatically converts the date/time fields.

Pooja Magadum1
Tera Expert

Yes Correct Chris.

But I don't want that to be converted.

My scenario is, we have to convert the TimeZone of logged-in user with Requester's TimeZone.

 

Suppose, logged-in User is 'Pooja' and TimeZone is 'IST'.

Requester is 'Sonali' and Sonali's TimeZone is 'America/New York', she has raised an req REQ00001 - RITM000012

DateTime of RITM000012 - 2018/04/05 00:30:00

 

So when Pooja opens RITM000012, then DateTime (Start Date) should be visible as 2018/04/05 00:30:00 (as per Sonali's TimeZone). That means everyone should be see Sonali's DateTime.

But currently Pooja can see DateTime as  2018/04/05 10:00:00 (as per Pooja's TZ)

 

That I have to convert my timezone with her tz.

 

Hope this clarifies.

Please let me know if any changes required in above code.

 

--

Shashi Bhushan
Kilo Guru

https://community.servicenow.com/community?id=community_question&sys_id=b28a4fe9db5cdbc01dcaf3231f96192b

 

 

Thanks

Please mark correct/helpful.

Pooja Magadum1
Tera Expert

Thank you so much for your response.

Its working now.