How to display same time for every time zone users?

Ankita Kolhe
Tera Contributor

Hello Community,

 

We have a field 'date' (type:date) in record producer. When user submits the record producer there are two variable  'start date' and 'end date' which sets it as date + currentTime and date +'23:59:59' respectively. The issue is that the script is that producer scripting is setting this end date and  it's not working as expected. For every user irrespective of time zone, the end date time should be ''23:59:59'. Below is the producer script:

 

current.type = "one_day";

var pdate = new GlideDateTime(producer.date);

current.end = pdate.getDate() + " 23:59:59";

current.user = producer.requested_for;

var date = new GlideDate();
var todayDate = date.getByFormat("yyyy-MM-dd");

if (todayDate == producer.date) {
    current.status = "active";

    var currentTime = new Date();
    current.start = new GlideDateTime();
    //  current.start = producer.date + ' ' + String(currentTime).split(" ")[4];

} else {
    var sdate = new GlideDateTime(producer.date);

    current.start = sdate.getDate() + " 00:00:00";
    current.status = "inactive";
}

gs.addInfoMessage(gs.getMessage("Thank you! The booking was successful."));
producer.portal_redirect = "mms?id=mms_one_day_parking&sys_id=" + RP.getParameterValue('sysparm_id') + '&submitted=' + current.sys_id;
 
I tries with setDisplayValue() and other ways to make it work but it's not working.
 
Thanks,
Ankita
1 REPLY 1

Nilesh Pol
Kilo Sage

Hi @Ankita Kolhe 

Seems your script is failing is that pdate.getDate() returns a Date part in the system's internal format (GMT), while concatenating " 23:59:59" to it creates a string that the system might misinterpret based on your user session's timezone.

 

please find the updated script:

current.type = "one_day";
current.user = producer.requested_for;


var endGdt = new GlideDateTime();
endGdt.setDisplayValue(producer.date + " 23:59:59");
current.end = endGdt;


var selectedDate = new GlideDate();
selectedDate.setValue(producer.date);

var todayDate = new GlideDate(); 

if (selectedDate.getValue() == todayDate.getValue()) {
current.status = "active";
current.start = new GlideDateTime();
} else {
current.status = "inactive";
var startGdt = new GlideDateTime();
startGdt.setDisplayValue(producer.date + " 00:00:00");
current.start = startGdt;
}

gs.addInfoMessage(gs.getMessage("Thank you! The booking was successful."));