The URI-encoded value %20 represents a space (a common encoding used frequently).
This means that we can simply do the following:
const str = decodeURIComponent("Tue%20May%2022%202018%2017:00:00%20GMT-0700%20(US%20Mountain%20Standard%20Time)");
// this will result in: "Tue May 22 2018 17:00:00 GMT-0700 (US Mountain Standard Time)";
Since the string appears to be a valid date, we can proceed by passing it to the Date constructor...
new Date(str); // Note that the output will be in your local timezone.
// In my case: Wed May 23 2018 09:00:00 GMT+0900 (Japan Standard Time)
Given that your desired format closely resembles the ISO standard, we can utilize that and split at the "T".
const myFormat = new Date(str).toISOString().split("T")[0];
// resulting in "2018-05-23" (or adjusted according to your locale).
Some error-checking might be necessary, especially for validating the date.
If you require more advanced functionality, consider using date-fns
Edit: It appears I may have misinterpreted the problem. However, using toISOString() and split remains a straightforward solution without adding extra dependencies. You could also check out for more options...)
(The issue seems to stem from attempting to send a date object instead of a string.)