Convert Selected Date time format into custom format.

Vamshi Krishna2
Tera Contributor

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;
},

1 ACCEPTED SOLUTION

-O-
Kilo Patron
Kilo Patron

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);
});

 

View solution in original post

14 REPLIES 14

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

Hi @Vamshi Krishna2 

 

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

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

VamshiKrishna2_0-1674377700449.png

 

Share your script include screenshot 


Thanks and Regards,

Saurabh Gupta

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