在 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)
全方位服务电话
如何转换?
最佳答案
%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 ...)
(您的问题是您正在尝试发送日期对象而不是字符串。)
关于javascript - Angular 日期选择器发送太多有关日期的数据,需要转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50782246/