Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

getNumericValue() is not working.

Sanjeeva Nagend
Tera Contributor

Hi Every one,

getNumericValue() is not working, below is the script.

 

var start_date = new GlideDateTime();
var end_date = '04-02-2020 07:30:00';

gs.print(start_date.getNumericValue());
gs.print(end_date.getNumericValue());
gs.print(new GlideDateTime());

 

result: 

*** Script: 1585737978939
*** Script: undefined
*** Script: 2020-04-01 10:46:18
1 ACCEPTED SOLUTION

Nootan
ServiceNow Employee
ServiceNow Employee

Hi,

You can try this script. 


var start_date = new GlideDateTime();
var end_date = new GlideDateTime("2020-02-04 07:30:00");

gs.print(start_date.getNumericValue());
gs.print(end_date.getNumericValue());
gs.print(new GlideDateTime());

 

Thanks

View solution in original post

5 REPLIES 5

Quan1
Kilo Contributor

Hi,

 

The getNumericValue() will not work in the Client Side.

Case 1: Let's try to use GlideAjax API

In the Client Script onChange():

var ga = new GlideAjax("dateHelper");                 //Script include name
ga.addParam("sysparm_name", "compareDate");           //Function name in the script include
ga.addParam("sysparm_start_date", "");                //First date
ga.addParam("sysparm_end_date", newValue);            //Second date
ga.getXML(function (response) {                        //Callback function
      var result = response.responseXML.documentElement.getAttribute("answer");
      //sysparm_start_date < sysparm_end_date ? "true" : "false"
      //return type default is string.
      if (result == "false") {
            //TODO
            g_form.addErrorMessage("Selected date must be in future");
      }
});

Create a new Script Include which name is dateHelper, set Client callable to True

Define compareDate function.

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

      compareDate: function () {
            var result = false;

            var startDate, gdStart, gdStartNumeric;
            var endDate, gdEnd, gdEndNumeric;

            startDate = this.getParameter('sysparm_start_date');        //Get fist date
            endDate = this.getParameter('sysparm_end_date');            //Get second date

            if (startDate) {
                  gdStart = new GlideDateTime(startDate);
            } else {
                  gdStart = new GlideDateTime();
            }
            gdStartNumeric = gdStart.getNumericValue();

            if (endDate) {
                  gdEnd = new GlideDateTime(endDate);
            } else {
                  gdEnd = new GlideDateTime();
            }
            gdEndNumeric = gdEnd.getNumericValue();

            if (gdStartNumeric < gdEndNumeric) {                        //Compare two dates
                  result = true;
            }
            return result;
      },

      type: 'dateHelper'
});

However, I don't know why the result of the compareDate function is parsed to a string instead of keeping the boolean type as I returned.

Please let me know if you have the answer.

 

Case 2: Use date() function of the javascript. (Refer to use this)

var startDate = new Date(start_date);
var numericStartDate = startDate.getTime();

var endDate = new Date(end_date);
var numericEndDate = endDate.getTime();

gs.info(numericStartDate);
gs.info(numericEndDate);

 

Kind Regard,