% 20 является пробелом в кодировке URI (вы видите это везде, так что это хорошо запомнить). Это означает, что мы можем просто:
const str = decodeURIComponent("Tue%20May%2022%202018%2017:00:00%20GMT-0700%20(US%20Mountain%20Standard%20Time)");
// which gives: "Tue May 22 2018 17:00:00 GMT-0700 (US Mountain Standard Time)";
И это похоже на действительную строку даты, поэтомумы можем просто передать его в Date ...
new Date(str); // Note that this will return the date in YOUR locale.
// In my case: Wed May 23 2018 09:00:00 GMT+0900 (Japan Standard Time)
Поскольку требуемый формат очень похож на формат toISOString, мы просто будем использовать его и разделять на «T».
const myFormat = new Date(str).toISOString().split("T")[0];
// returns "2018-05-23" (or whatever your locale might be).
Может потребоваться проверка ошибок.(Например, если дата действительна или нет).
Для чего-то более продвинутого я бы просто набрал date-fns
Редактировать: (О, я думаю, мойнавыки чтения на понимание отключены, как обычно. Тем не менее, я думаю, что ISOString () и split - самый простой вариант (так как кажется, что у вас уже есть объект Date) без добавления других вещей. Тогда есть https://danielykpan.github.io/date-time-picker/#locale-formats ...)
(Ваша проблема в том, что вы пытаетесь отправить объект даты вместо строки.)