Convert any date and Time format to MM-dd-yyyy hh:mm:ss

Apoorva D
Tera Contributor

Hi Team,

I have a Requirement where planned start and Planned end date should be in between Change Planned start and Change Planned end date. I have written OnLoad script where it compares and if it is invalid (Same DateTime or outside of Change Planned start and End )it clears out Both Planned  Start date and Planned End date, but this is not working for all Date Time Format. So i want to achieve this by taking it to MM-dd-yyyy hh:mm:ss 24hour format ( it should convert to mentioned format irrespective of what user choose in their system but it should convert to mentioned format) and compare so that it will work for any format.


User might select following Date Time Format in their instance
MM-dd-yyyy
dd/MM/yyyy

dd-MM-yyyy

dd.MM.yyyy

yyyy.MM.dd

Time Format
hh:mm:ss -24hr

hh.mm.ss -24hr

hh:mm:ss -12hr

hh.mm.ss -12hr

 

Please find the Onload Script

function onLoad() {
    var expected = g_form.getValue('expected_start'); // Planned start
    var start = g_form.getValue('u_change_planned_start'); // Change Planned start
    var end = g_form.getValue('u_change_planned_end'); // Change Planned end
    var due1 = g_form.getValue('due_date'); //Planned end
        var ajax = new GlideAjax('TRCheckDatesAjax');
        ajax.addParam('sysparm_name', 'ExpectedStart');
        ajax.addParam('sysparm_tskdt', expected);
        ajax.addParam('sysparm_chgsdt', start);
        ajax.addParam('sysparm_chgedt', end);
        ajax.addParam('sysparm_due', due1);
        ajax.getXML(calculateDuration);

    function calculateDuration(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        if (answer != 'true') {
            g_form.clearValue('expected_start');
            g_form.clearValue('due_date');
        } else {
            g_form.setValue("expected_start", expected);
        }
    }
}
 
ScriptInclude
ExpectedStart: function() {
    var d1 = new GlideDateTime(this.getParameter('sysparm_tskdt'));//start
    var d2 = new GlideDateTime(this.getParameter('sysparm_chgsdt'));//palnned start
    var d3 = new GlideDateTime(this.getParameter('sysparm_chgedt'));//planeed end
    var d4 = new GlideDateTime(this.getParameter('sysparm_due'));//due date
    if((d1 >= d2 && d1 <= d3) && (d4 >= d1 && d4 <= d3)){
        return true;
    }
    else{
        return false;
    }


Can anyone help me on this please?

 

Regards,

Apoorva D

2 REPLIES 2

Sid_Takali
Kilo Patron
Kilo Patron

Hi @Apoorva D Try below code 

Client Script:

function onLoad() {
    var expected = g_form.getValue('expected_start'); 
    var start = g_form.getValue('u_change_planned_start'); 
    var end = g_form.getValue('u_change_planned_end'); 
    var due1 = g_form.getValue('due_date'); 

    var formattedExpected = formatDateTime(expected);
    var formattedStart = formatDateTime(start);
    var formattedEnd = formatDateTime(end);
    var formattedDue1 = formatDateTime(due1);

    var ajax = new GlideAjax('TRCheckDatesAjax');
    ajax.addParam('sysparm_name', 'ExpectedStart');
    ajax.addParam('sysparm_tskdt', formattedExpected);
    ajax.addParam('sysparm_chgsdt', formattedStart);
    ajax.addParam('sysparm_chgedt', formattedEnd);
    ajax.addParam('sysparm_due', formattedDue1);
    ajax.getXML(calculateDuration);

    function calculateDuration(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        if (answer != 'true') {
            g_form.clearValue('expected_start');
            g_form.clearValue('due_date');
        } else {
            g_form.setValue("expected_start", expected);
        }
    }
}
function formatDateTime(dateTime) {
    var formattedDateTime = new GlideDateTime(dateTime);
    return formattedDateTime.getValue();
}

 

Script Include:

var TRCheckDatesAjax = Class.create();
TRCheckDatesAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    ExpectedStart: function() {
        var d1 = new GlideDateTime(this.getParameter('sysparm_tskdt'));// Planned start
        var d2 = new GlideDateTime(this.getParameter('sysparm_chgsdt'));// Change Planned start
        var d3 = new GlideDateTime(this.getParameter('sysparm_chgedt'));// Change Planned end
        var d4 = new GlideDateTime(this.getParameter('sysparm_due'));// Planned end

        if((d1 >= d2 && d1 <= d3) && (d4 >= d1 && d4 <= d3)){
            return 'true';
        } else

 

 

Hi Sid_Takali,

 

I tried your code but This onload script is not working, it is not going inside

function calculateDuration(response). I tried by adding logs but it wont work.
 
Regards,
Apoorva