javascript - 在输入中搜索在 Material 日期选择器中给出了不正确的日期,需要将其转换为 UTC

标签 javascript angular angular-material

我正在根据我的要求扩展 MomentDateAdapter。当我从日历中选择一个日期时,我得到了正确的输出,但是当我在输入字段中手动输入内容时,我得到了错误的输出。

对于选定的日期,我正在使用 _moment.utc({ year, month, date }).locale(navigator.language); 将选定的值转换为 UTC 格式,但我不确定了解当用户在输入字段中搜索时如何执行相同的操作。

StackBlitz .

重现:

  1. 尝试从日历中选择一个值并查看控制台(注意日期已转换为 UTC)
  2. 现在尝试通过键入手动添加日期并查看控制台(日期未转换为 UTC)。

最佳答案

您需要将 momentparse 方法调用调整为:

return moment.utc(value, parseFormat, this.locale, true);

从您的输入中获取 utc 日期。

这是您改编的 Stackblitz .

如果您通过选择器设置日期,方法 formatcreateDate 将被调用,如果您通过输入设置,方法 parse 将被调用.

关于javascript - 在输入中搜索在 Material 日期选择器中给出了不正确的日期,需要将其转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774389/

相关文章:

javascript - 强调如何使用each并对多个对象数组进行排序

javascript - HTML 无法识别 eventListeners

angular - 当用户在 angular13 中没有任何权限时将用户重定向到主页

angular - 如何从表格组件中读取值

angular - 如何正确使用 mat-sidenav?

angular - 如何在项目中导入Angular Material?

javascript - 根据要求实例化变量并编译 sass/less 文件

javascript - 此上下文中的异常 : Cannot call SpreadsheetApp. getUi()

javascript - 在 Angular 5 中设置 header

javascript - 获取类型错误 : (options. astTransformers || []).map 在 Angular 中运行测试套件时不是函数