javascript - Angular 日期选择器发送太多有关日期的数据,需要转换

标签 javascript angular typescript datepicker

在 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)

如何转换?

最佳答案

%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/

相关文章:

typescript - 了解 tsconfig 文件中的 esModuleInterop

javascript - 下拉菜单上的 jQuery val() 返回值 "Array"

javascript - AngularJS 服务(更新/保存)

javascript - Angular2 表单重置,表单重置或提交后取消选中 radio

javascript - 如何在断开连接或浏览器关闭后注销用户?

javascript - OnChanges 不会在部分对象更改时触发

javascript - showMessageBox promise 永远不会被调用

javascript - 筛选带有选中复选框的项目

Angular npm start 它正在生成浏览器应用程序包,尽管该应用程序未在生产中

javascript - AngularFire2 AuthCredentials