使用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)
全程服务电话
我该怎么转换呢?
答案 0 :(得分:3)
%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
编辑:(哦,我猜我的阅读理解能力与往常一样。但是,我认为toISOString()和split是最简单的选择(因为看起来你已经有了一个Date对象),而不会拉其他东西。然后有https://danielykpan.github.io/date-time-picker/#locale-formats ...)
(您的问题是您正在尝试发送日期对象而不是字符串。)