Date Time Servicenow

Update Review Date

(function executeRule(current, previous /*null when async*/) {

    var gdt = new GlideDateTime(current.ends);
    gdt.addDays(90);
    current.u_review_date_custom = gdt;

})(current, previous);

Warning

.addDays() will addDays to the time, but does not return a glideDateTime

current.ends is a Date (not DateTime) field

Comparing Due Date with Start Date

On Change Client Script for Due Date

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || g_form.getValue("expected_start") == "") {
      return;
   }

  var start_date = g_form.getValue("expected_start");

  //Calls serverside script to check if start date is earlier than due date
  var ajax = new GlideAjax('TransferOrderDateTimeAjax');
  ajax.addParam('sysparm_name','compareDatesAjax');
  ajax.addParam('sysparm_startDate', start_date);
  ajax.addParam('sysparm_endDate', newValue);
  ajax.getXML(warnIfFalse);

  //Callback will display error if start date is earlier than due date
  function warnIfFalse(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    if (answer == "false") {
      g_form.setValue("due_date", "");
      g_form.showErrorBox("due_date", "Due Date must be after Start Date");
    }
  }
}

Comparing Months

This code is used to find the difference between two dateTime in months

var start = profileGR.getValue("employment_start_date");
var nowDate = new GlideDateTime().toString();

var year1 = start.split("-")[0];
var month1 = start.split("-")[1];

var year2 = nowDate.split("-")[0];
var month2 = nowDate.split("-")[1];

if (year1 == year2) {
  return month2-month1;
} else {
  var yearDiff = year2 - year1;
  var monthDiff = month2 - month1;
  return  (yearDiff * 12) + monthDiff;
}

Comparing Dates when days doesn’t matter (untested)

Uses a milisecond timestamp, works for either Date or Date/Time

newDate(g_form.getValue("expected_start")).getTime() > newDate(g_form.getValue("due_date")).getTime()