- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2023 11:26 AM
Hello All,
I have a requirement where I have 2 fields i.e. 'Please Select the duration' (Radio Button with 2 fields i.e. 24 Hours and 48 Hours)(Name - please_select_the_duration) and 'Start Date' (Date Time field) (Name - start_date). Based upon the radio button selected and on change of Start Date the End date field needs to be populated by adding 24 Hours or 48 Hours based upon the selectiom.
I tried multiple approaches from community, but no luck. Can someone please help me with the same.
Script Include:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-23-2023 04:41 AM
So in the script include you write:
var dt = new GlideDateTime(start_date);
This will only work if start_date is a string that contains a date and time in UTC time zone and format YYYY-DD-MM HH:mm:ss.
The original poster wrote:
var selected_date = new GlideDate();
selected_date.setDisplayValue(this.getParameter('sysparm_Date'));
which is way better, only it is the wrong object.
Should have been:
var selected_date = new GlideDateTime();
selected_date.setDisplayValue(this.getParameter('sysparm_Date'));
That is because GlideDateTime's setDisplayValue expects a string representing a date and time in the current user's time zone and the current user's format - whichever that format is.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2023 10:54 PM
Can you check what you are getting 'result.endDate' in script include by putting some logs.
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2023 11:09 PM - edited 09-22-2023 11:13 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2023 11:50 PM
Have done some changes & checked Its working for me...!!
Can you try
Script Include:
pastDate: function() {
// object to return data
var result ={
'isStartDateValid':'',
'endDate':''
}
// get values selected on form
var radio_button = this.getParameter('sysparm_Duration');
var start_date = this.getParameter('sysparm_Date');
//Check if start date is not past date
var getCurrentDate = gs.nowDateTime();
if(start_date > getCurrentDate) {
result.isStartDateValid = true;
} else {
result.isStartDateValid = false;
}
// get future date depends upon duration selected.
var dt = new GlideDateTime(start_date);
if (radio_button == '24 hours'){ //use your backend value here
dt.addDaysUTC(1); //24 hrs = 1 day
} else {
dt.addDaysUTC(2); //48 hr = 2 days
}
result.endDate = dt.getDisplayValue();
return JSON.stringify(result);
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var radio_button = g_form.getValue('please_select_the_duration');
var ga = new GlideAjax('UtilsAjax');
ga.addParam('sysparm_name', 'pastDate');
ga.addParam('sysparm_Date', newValue);
ga.addParam('sysparm_Duration',radio_button);
ga.getXMLAnswer(CheckDateValidation);
}
function CheckDateValidation(answer) {
var result= JSON.parse(answer);
if (result.isStartDateValid == true) {
//Set the end date depending upon result returned by script include
g_form.setValue('end_date',result.endDate);
} else {
alert("start date should not be past date");
}
}
}
Output :
Time displayed may be different because of timezone
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-23-2023 12:09 AM
Hello I tried the same code but it is not working as I am using the a different Date Time format w.r.t yours format. I am using the format as MMM DD,YYYY HH:MM:SS (Example - Oct 06, 2023 09:06:36)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-23-2023 03:09 AM
You can format the end date w.r.t yours in script include and then return it.
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates