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

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,