getDayOfWeekLocalTime

arobertson
Tera Guru

Hi all,

I have the following issue with getDayOfWeekLocalTime. If i pick the 5th December, its returning 2 (Tuesday) instead of a 6 (Saturday). It does seems to work fine if i change the date format in my user profile to yyyy-MM-dd.

Below is my script include. I'm basically taking a datetime input, checking if its a weekday against a schedule and then trying to print the day of the week.

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

    prioritySetter: function() {

        var schedule = new GlideSchedule('7a5c6245db20e8907f8b6792ca961992'); //Catalog Item Priority Checker
        var meetingDatetime = this.getParameter('sysparm_meeting_date_time');
        var dateTime = new GlideDateTime(meetingDatetime);
        var dateOnly = meetingDatetime.split(" ")[0];
        var dayOfWeek = dateTime.getDayOfWeekLocalTime();
        var isWeekday = "No";

        if (schedule.isInSchedule(dateTime)) {
            isWeekday = "Yes";
        } else {
            isWeekday = "No";
        }

        var answer = ("Current Meeting Date: " + dateOnly + " - " + "Weekday: " + isWeekday + " - " + "Day Selected: " + dayOfWeek);

        return answer;
    },

    type: 'UserClientUtilities'
});
1 ACCEPTED SOLUTION

@arobertson 

Seems due to format

Try this

var dt = '05/12/2020 09:03:34';

var gdt = new GlideDateTime();

gdt.setDisplayValue(dt,'dd/MM/yyyy HH:mm:ss');

gs.info(gdt.getDate());

var dayOfWeek = gdt.getDayOfWeekLocalTime();

gs.info(dayOfWeek);

Output:

find_real_file.png

So update your script like this

prioritySetter: function() {

        var schedule = new GlideSchedule('7a5c6245db20e8907f8b6792ca961992'); //Catalog Item Priority Checker
        var meetingDatetime = this.getParameter('sysparm_meeting_date_time');
        var dateTime = new GlideDateTime();
        dateTime.setDisplayValue(meetingDatetime,'dd/MM/yyyy HH:mm:ss');

        var dateOnly = dateTime.getDate();
        var dayOfWeek = dateTime.getDayOfWeekLocalTime();
        var isWeekday = "No";

        if (schedule.isInSchedule(dateTime)) {
            isWeekday = "Yes";
        } else {
            isWeekday = "No";
        }

        var answer = ("Current Meeting Date: " + dateOnly + " - " + "Weekday: " + isWeekday + " - " + "Day Selected: " + dayOfWeek);

        return answer;
    },

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

11 REPLIES 11

Sourav16
Kilo Guru

Hi,

Could you tell me how and what value you are passing through the client script in sysparm_meeting_date_time parameter 

If you could show the client part how you are retrieving and passing the parameter via GlideAjax.

 

Thanks

Sourav

arobertson
Tera Guru

Its being passed from a catalog client script date/time variable.

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

    var ga = new GlideAjax('UserClientUtilities');
    ga.addParam('sysparm_name', 'prioritySetter');
    ga.addParam('sysparm_meeting_date_time', newValue);
    ga.getXML(setPriority);

    function setPriority(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        alert(answer);
    }
}

Hi,

in script include did you check by adding log what value you get for sysparm_meeting_date_time

var meetingDatetime = this.getParameter('sysparm_meeting_date_time');

gs.info('meetingDatetime'+meetingDatetime);

Also try to use this

var dateTime = new GlideDateTime(meetingDatetime.toString());

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi @Ankur Bawiskar,

gs.info displays 05/12/2020 09:03:34. I think the problem is that getDayOfWeekLocalTime() is expecting to see the format as YYYY-MM-DD.

meetingDatetime.toString() made no difference.