- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-21-2023 10:42 PM
Hi,
when I select the start date from the catalog variable I want to convert it into a custom format in a new variable.
For example, if the start date is 22/01/2023 11:36:52, I want to convert it to 22/JAN/2023 11:36.
But when I use the below code it's not working. or any simple way to do it
Client Script:
var st = g_form.getValue('start_date_time');
var ajax = new GlideAjax('Test');
ajax.addParam('sysparm_name','getstartdate');
ajax.addParam('sysparm_startDate', st);
ajax.getXML(getResponse);
function getResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var month_name = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
var month_number = parseInt(answer.substring(3, 5));
var curr_month = month_name[month_number - 1];
var str1 = answer.substring(0, 3);
var str2 = answer.substring(5, 16);
var dt = str1 + curr_month.toString() + str2;
g_form.setValue('planned_start_time', dt);
}
Script Include:
getstartdate : function() {
var gdt = new GlideDateTime(this.getParameter('sysparm_startDate'));
var gtime1 = new GlideTime();
gtime1.setValue("00:00:00");
gdt.subtract(gtime1);
var gtime2 = gdt.getTime();
var tdg = gdt.getDate();
tdg = tdg.getByFormat('dd/MM/yyyy');
var di = gtime2.getByFormat('hh:mm:ss');
return tdg + " " + di;
},
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-22-2023 11:11 AM - edited 01-22-2023 11:34 AM
This is what I would do:
- Script Include:
var GlideDateTimeAjax = Class.create();
GlideDateTimeAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
'customFormatDateTime': function GlideDateTimeAjax$customFormatDateTime () {
var gdt = new GlideDateTime(),
unixEpochMilliseconds = +this.getValue();
gdt.setNumericValue(unixEpochMilliseconds);
var localDate = gdt.getLocalDate().getByFormat('yyyy/MMM/dd'),
localTime = gdt.getLocalTime().getByFormat('HH:mm');
return localDate + ' ' + localTime;
},
'type': 'GlideDateTimeAjax',
});
- Client Script:
var unixEpochMilliseconds = getDateFromFormat(g_form.getValue('start_date_time'), g_user_date_time_format);
var gx = new GlideAjax('GlideDateTimeAjax');
gx.addParam('sysparm_name', 'customFormatDateTime');
gx.addParam('sysparm_value', unixEpochMilliseconds);
gx.getXMLAnswer(function (answer) {
g_form.setValue('planned_start_time', answer);
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-21-2023 11:32 PM
Hi,
Before setting this value, please check if you are getting this from script include for that please put a alert for the answer variable.
Thanks and Regards,
Saurabh Gupta
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-21-2023 11:36 PM
Please change you script as below
Script Include
Script Include:
getstartdate : function() {
var gdt = new GlideDateTime(this.getParameter('sysparm_startDate'));
var gtime2 = gdt.getTime();
var tdg = gdt.getDate();
tdg = tdg.getByFormat('dd/MMM/yyyy');
var di = gtime2.getByFormat('hh:mm');
return tdg + " " + di;
},
Client Script
var st = g_form.getValue('start_date_time');//please make sure you variable backend names are correct
var ajax = new GlideAjax('Test');
ajax.addParam('sysparm_name','getstartdate');
ajax.addParam('sysparm_startDate', st);
ajax.getXML(getResponse);
function getResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
g_form.setValue('planned_start_time', answer);//please make sure you variable backend names are correct
}
Thanks and Regards,
Saurabh Gupta
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-22-2023 12:55 AM
Hi, Saurabh thank you so much this worked but the timing was showing a difference as below. It is not exactly same as start date time. but instead it was showing 12:00
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-22-2023 05:44 AM
Share your script include screenshot
Thanks and Regards,
Saurabh Gupta
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-22-2023 05:54 AM
Run below code in background script, it is working fine.
var dt="2023-01-22 15:52:12";
var gdt = new GlideDateTime(dt);
gs.info(gdt)
var gtime2 = gdt.getTime();
var tdg = gdt.getDate();
tdg = tdg.getByFormat('dd/MMM/yyyy');
var di = gtime2.getByFormat('HH:mm');
gs.info( tdg + " " + di);
Please check what value you are sending as input from client side, put alert to check that.
Thanks and Regards,
Saurabh Gupta