Угловой сборщик данных отправляет слишком много данных о дате и должен быть конвертирован - PullRequest
0 голосов
/ 10 июня 2018

В Angular 5 я использую какой-то пакет npm для дат

import { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';

Проблема в том, что мне нужно отправить на сервер

только этот формат

2018-05-23

Однако он отправляет все это

Tue%20May%2022%202018%2017:00:00%20GMT-0700%20(US%20Mountain%20Standard%20Time)

Полный сервисный звонок

http://server:9080/RxPace/rest/config/users?eff-date=Tue%20May%2022%202018%2017:00:00%20GMT-0700%20(US%20Mountain%20Standard%20Time)

Как я могу преобразовать это?

1 Ответ

0 голосов
/ 10 июня 2018

% 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 ...)

(Ваша проблема в том, что вы пытаетесь отправить объект даты вместо строки.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...