client script to change date and time value of field b based on the users time zone while form load

BALAJI K R
Tera Expert

Hi,

 

I have a ask in which when fieldA is changed, fieldB (dateAndTime field) should populate the current date and time based on users time zone. Also when any other user opens the form the fieldB should be in the current users time zone, if there is no time zone for the user the fieldB value should be in GMT. This is in scopped application.

below is the onchange client script

    if (isLoading) {
        sessionStorage.setItem('initial_time', g_form.getValue('fieldB'));
        return;
    }

    if (newValue != '') {
        if (newValue != oldValue) {
            var date = new Date();
            var current_dt = new Date(date.getTime() + date.getTimezoneOffset() * 60000);
            var format_dt = formatDate(current_dt, g_user_date_time_format);
            g_form.setValue('fieldB', format_dt);
        } else {
            g_form.setValue('fieldB', sessionStorage.getItem('initial_time'));
        }
    } else {
        g_form.setValue('fieldB', '');
    }
2 REPLIES 2

Sohail Khilji
Kilo Patron
Kilo Patron

Hi @BALAJI K R ,

 

Here is the fix: try

function onChangeFieldA(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue === '') {
        return;
    }

    var userTimeZone = g_user.getUser().getPreference('timezone');
    var timeZoneOffset = userTimeZone ? getUserTimeZoneOffset(userTimeZone) : 0;
    var currentDate = new Date(new Date().getTime() + (timeZoneOffset * 60000));

    g_form.setValue('fieldB', formatDate(currentDate, g_user_date_time_format));
}

function getUserTimeZoneOffset(timezone) {
    var timeZoneOffset = timezone.split('GMT')[1];
    var sign = timeZoneOffset[0] === '+' ? 1 : -1;
    var hours = parseInt(timeZoneOffset.slice(1, 3));
    var minutes = parseInt(timeZoneOffset.slice(3, 5));
    return sign * (hours * 60 + minutes);
}

function formatDate(date, format) {
    return date;
}

☑️ Please mark responses as HELPFUL or ACCEPT SOLUTION to assist future users in finding the right solution....

LinkedIn - Lets Connect

BALAJIKR_0-1714380779057.png

I'm getting this error, also this is in Scoped application
below is the script

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading) {
        return;
    }

    if (newValue != '') {
        var userTimeZone = g_user.getUser().getPreference('timezone');
        alert("userTimeZone " + userTimeZone);
        var timeZoneOffset = userTimeZone ? getUserTimeZoneOffset(userTimeZone) : 0;
        var currentDate = new Date(new Date().getTime() + (timeZoneOffset * 60000));

        g_form.setValue('assignment_date', formatDate(currentDate, g_user_date_time_format));
    }

    function getUserTimeZoneOffset(timezone) {
        var timeZoneOffset = timezone.split('GMT')[1];
        var sign = timeZoneOffset[0] === '+' ? 1 : -1;
        var hours = parseInt(timeZoneOffset.slice(1, 3));
        var minutes = parseInt(timeZoneOffset.slice(3, 5));
        return sign * (hours * 60 + minutes);
    }

    function formatDate(date, format) {
        return date;
    }
}