How to set CAB date/time field to next Friday at 9 AM CST from planned start date?

bbf35621
Kilo Sage

I created a before BR in Change, and it's able to get to whatever the next Friday from the planned start date, but the time is always set to 6 PM instead of 9 AM. How can I set it to 9 AM? Here is my script in BR,

var getDay = new GlideDateTime(current.start_date);
    var t = getDay.getDayOfWeekLocalTime();
	
    if (t == 1) {
        getDay.addDaysLocalTime(5);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 2) {
        getDay.addDaysLocalTime(4);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 3) {
        getDay.addDaysLocalTime(3);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 4) {
        getDay.addDaysLocalTime(2);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 5) {
        getDay.addDaysLocalTime(1);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 6) {
        getDay.addDaysLocalTime(7);
        current.cab_date = getDay.getDisplayValue();
    } else if (t == 7) {
        getDay.addDaysLocalTime(6);
        current.cab_date = getDay.getDisplayValue();
    }

 

1 ACCEPTED SOLUTION

Hi @bbf35621    missed a line, internally time is stored in UTC. So you need one more adjustment to store date/time in UTC.

var getDay = new GlideDateTime(current.start_date);

    getDay.subtract(  getDay.getLocalTime() );  // subtract the time portion of dateTime
    getDay.add( 9 * 60 * 60 * 1000);  // add 9 hours in milliseconds
    getDay.subtract(getDay.getTZOffset()); // subtract timezone offset to get UTC time

    var t = getDay.getDayOfWeekLocalTime();

 

Also you'll notice your addDaysLocalTime is off by '1' due to this adjustment.

 

hope that helped

--

Bala Guthy

View solution in original post

13 REPLIES 13

BalaG
Kilo Sage

Hi @bbf35621   here are two additional lines code you need

 

var getDay = new GlideDateTime(current.start_date);

    getDay.subtract(  getDay.getLocalTime() );  // subtract the time portion of dateTime
    getDay.add( 9 * 60 * 60 * 1000);  // add 9 hours in milliseconds

    var t = getDay.getDayOfWeekLocalTime();

 

Hope this helps

--

Bala Guthy

 

Please mark this as a solution or helpful as appropriate

I just tried that and it's still populated at 6 PM. Here are my screenshots,

bbf35621_0-1702997568481.pngbbf35621_1-1702997593391.png

 

Hi @bbf35621    missed a line, internally time is stored in UTC. So you need one more adjustment to store date/time in UTC.

var getDay = new GlideDateTime(current.start_date);

    getDay.subtract(  getDay.getLocalTime() );  // subtract the time portion of dateTime
    getDay.add( 9 * 60 * 60 * 1000);  // add 9 hours in milliseconds
    getDay.subtract(getDay.getTZOffset()); // subtract timezone offset to get UTC time

    var t = getDay.getDayOfWeekLocalTime();

 

Also you'll notice your addDaysLocalTime is off by '1' due to this adjustment.

 

hope that helped

--

Bala Guthy

I have tried both your suggestions and the time result is still 6 PM.

bbf35621_0-1703012624109.png