- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-05-2023 11:29 AM
Hello Experts,
I am running a REST API call and getting a response where I am able to parse the responsebody.
Below is the sample JSON response.
{
"results": {
"systemCount": 1,
"totalSystemsCount": "1",
"systemDetails": [
{
"osVersion": "9.11.1P5",
"model": "FAS2750",
"shipmentDate": "Fri Jan 28 00:00:00 PST 2022",
"transportMethod": "https",
"sspContractEndDate": "Sun Jan 31 08:00:00 PST 2027",
"latestAsupID": "2023050300000209",
"product": "Filer"
}
]
}
}
My requirement is to fetch the shipmentDate & sspContractEndDate field value's and convert them into glide_date_time / glide_date format and update the value into alm_hardware table.
"Fri Jan 28 00:00:00 PST 2022" the format looks quite different and I am not able to convert this into a date object using the GlideDateTime() function.
Please let me know how to convert this into a proper date format.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-05-2023 11:48 AM - edited 05-05-2023 01:46 PM
Parse the two values, getting the year,day,month,time_of_day, and timezone. then build a string in the format:
2023-05-02 01:25:49. Must adjust for PST, and some "helper" methods are here:
One example there has:
This instantiates a GlideDateTime object using the yyyy-MM-dd'T'HH:mm:ss.SSSZ format.
var start = new GlideDateTime("2014-07-04T12:08:56.235-0700");
var end = new GlideDateTime(start);
gs.info(end);
Other Community members may have a different suggestion.
Here's some logic if you go my suggested route:
var dateStr = "Fri Jan 28 00:00:00 PST 2022";
var mStr = dateStr.substr(4,3);
var dStr = dateStr.substr(8,2);
var tStr = dateStr.substr(11,8);
var tzStr = dateStr.substr(20,3);
var yStr = dateStr.substr(24,4);
gs.info(mStr + "-" + dStr + "-" + yStr + " " + tStr + " " + tzStr);
// Now build GlideDateTime value
var mVal = "";
switch(mStr) {
case 'Jan':
mVal = "01";
break;
case 'Feb':
mVal = "02";
break;
case 'Mar':
mVal = "03";
break;
case 'Apr':
mVal = "04";
break;
case 'May':
mVal = "05";
break;
case 'Jun':
mVal = "06";
break;
case 'Jul':
mVal = "07";
break;
// ...
default:
mVal = "00"
}
var tzOffSet = "";
switch (tzStr) {
case 'EDT':
tzOffset = "0400";
break;
case 'EST':
tzOffset = "0500";
break;
case 'CDT':
tzOffset = "0500";
break;
case 'CST':
tzOffset = "0600";
break;
case 'MDT':
tzOffset = "0600";
break;
case 'MST':
tzOffset = "0700";
break;
case 'PDT':
tzOffset = "0700";
break;
case 'PST':
tzOffset = "0800";
break;
default:
tzOffset = "0000";
}
var gdtStr = yStr + "-"+ mVal + "-" + dStr + "T" + tStr + ".000-" + tzOffset;
gs.info('gdtStr = ' + gdtStr);
var gdt = new GlideDateTime(gdtStr);
gs.info("gdt = " + gdt);
which gives:
*** Script: Jan-28-2022 00:00:00 PST
*** Script: gdtStr = 2022-01-28T00:00:00.000-0800
*** Script: gdt = 2022-01-28 08:00:00
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-05-2023 11:48 AM - edited 05-05-2023 01:46 PM
Parse the two values, getting the year,day,month,time_of_day, and timezone. then build a string in the format:
2023-05-02 01:25:49. Must adjust for PST, and some "helper" methods are here:
One example there has:
This instantiates a GlideDateTime object using the yyyy-MM-dd'T'HH:mm:ss.SSSZ format.
var start = new GlideDateTime("2014-07-04T12:08:56.235-0700");
var end = new GlideDateTime(start);
gs.info(end);
Other Community members may have a different suggestion.
Here's some logic if you go my suggested route:
var dateStr = "Fri Jan 28 00:00:00 PST 2022";
var mStr = dateStr.substr(4,3);
var dStr = dateStr.substr(8,2);
var tStr = dateStr.substr(11,8);
var tzStr = dateStr.substr(20,3);
var yStr = dateStr.substr(24,4);
gs.info(mStr + "-" + dStr + "-" + yStr + " " + tStr + " " + tzStr);
// Now build GlideDateTime value
var mVal = "";
switch(mStr) {
case 'Jan':
mVal = "01";
break;
case 'Feb':
mVal = "02";
break;
case 'Mar':
mVal = "03";
break;
case 'Apr':
mVal = "04";
break;
case 'May':
mVal = "05";
break;
case 'Jun':
mVal = "06";
break;
case 'Jul':
mVal = "07";
break;
// ...
default:
mVal = "00"
}
var tzOffSet = "";
switch (tzStr) {
case 'EDT':
tzOffset = "0400";
break;
case 'EST':
tzOffset = "0500";
break;
case 'CDT':
tzOffset = "0500";
break;
case 'CST':
tzOffset = "0600";
break;
case 'MDT':
tzOffset = "0600";
break;
case 'MST':
tzOffset = "0700";
break;
case 'PDT':
tzOffset = "0700";
break;
case 'PST':
tzOffset = "0800";
break;
default:
tzOffset = "0000";
}
var gdtStr = yStr + "-"+ mVal + "-" + dStr + "T" + tStr + ".000-" + tzOffset;
gs.info('gdtStr = ' + gdtStr);
var gdt = new GlideDateTime(gdtStr);
gs.info("gdt = " + gdt);
which gives:
*** Script: Jan-28-2022 00:00:00 PST
*** Script: gdtStr = 2022-01-28T00:00:00.000-0800
*** Script: gdt = 2022-01-28 08:00:00
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-09-2023 07:25 AM
Hello Bert,
Thank you, I have followed your suggested route which helped in achieving the expected result.