
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-05-2022 11:16 AM
Hello ServiceNow Experts,
I've been struggling to subtract one day from a date value I get from a custom table in a Scoped Application.
The idea behind this is that if the "end date" value I get falls on a Sunday, then in the email notification I should add some text to do something on Saturday.
For that I need to subtract one day from the end day if end day is a Sunday.
With this code I can validate if it is Sunday
(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */
email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */
event) {
var endDate = new GlideDate();
endDate.setValue(current.planned_end);
var dateString = endDate.getByFormat('EEEE, MMM d'); // e.g. Friday June 3
var sunday = dateString.indexOf('Sunday');
if (sunday > -1) {
var saturday = endDate.addDaysLocalTime(-1);
}
if (sunday > -1) {
template.print("<br /><p><strong><span>Since this observance includes Sunday, Operators have the option of:</strong></span></p><ul><li>Removing the American flag at sunset on " + saturday.getByFormat('EEEE, MMM d') + "</li><li>Returning the flag to full-staff at sunset on " + dateString + "</li>");
} else {
return;
}
})(current, template, email, email_action, event);
I'm sure I have something wrong in my code. I was hoping someone could help me fix it.
I can't get to subtract 1 day from the end date and then format that result. Maybe my understanding of how date/time data is handled is wrong.
Thanks
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-17-2022 04:15 PM
(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {
var todayDate = new GlideDate().getByFormat('EEEE, MMM d');
var endDate = new GlideDate();
endDate.setValue(current.planned_end);
var dateString = endDate.getByFormat('EEEE, MMM d'); // e.g. Friday June 3
var sundayString = dateString.indexOf("Sunday");
var getSaturday = new GlideDateTime(current.planned_end);
getSaturday.addDaysLocalTime(-0);
var saturday = getSaturday.getLocalDate();
if (sundayString > -1) {
template.print("Remove it on " + saturday.getByFormat('EEEE, MMM d') + ", and BLAH BLAH BLAH); // The output is Remove it on Saturday, Month Day ie Saturday Jun 19
} else {
return;
}
})(current, template, email, email_action, event);
I ended up with the following code and works OK.
For some reason when I set getSaturday.addDaysLocalTime(-1) I get Friday. So I guess SN counts starting from 0.
I hope this helps anyone with the same issue.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-17-2022 04:15 PM
(function runMailScript(/* GlideRecord */ current, /* TemplatePrinter */ template,
/* Optional EmailOutbound */ email, /* Optional GlideRecord */ email_action,
/* Optional GlideRecord */ event) {
var todayDate = new GlideDate().getByFormat('EEEE, MMM d');
var endDate = new GlideDate();
endDate.setValue(current.planned_end);
var dateString = endDate.getByFormat('EEEE, MMM d'); // e.g. Friday June 3
var sundayString = dateString.indexOf("Sunday");
var getSaturday = new GlideDateTime(current.planned_end);
getSaturday.addDaysLocalTime(-0);
var saturday = getSaturday.getLocalDate();
if (sundayString > -1) {
template.print("Remove it on " + saturday.getByFormat('EEEE, MMM d') + ", and BLAH BLAH BLAH); // The output is Remove it on Saturday, Month Day ie Saturday Jun 19
} else {
return;
}
})(current, template, email, email_action, event);
I ended up with the following code and works OK.
For some reason when I set getSaturday.addDaysLocalTime(-1) I get Friday. So I guess SN counts starting from 0.
I hope this helps anyone with the same issue.