【发布时间】:2019-10-27 22:39:32
【问题描述】:
我知道有几个关于这个的主题,我都阅读了它们,但好几天都无法解决这个问题。我可能找到了解决方案,但它似乎对我来说很脏。
所以和其他用户一样,我对 datePicker 也有同样的问题。对我来说,它是 Angular Material Datepicker mat-datepicker
当我记录值时,我得到了正确的结果:
Wed Dec 24 1999 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
但在请求中是
1999-12-23T23:00:00.000Z
我尝试过的:
我已将{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } } 添加到我的component 和我的app.module.ts。这对我来说没有任何区别。
我的肮脏解决方案(在发送请求之前):
let newDate= new Date(this.personalForm.get("dateOfBirth").value);
newDate.setMinutes(newDate.getMinutes() - newDate.getTimezoneOffset());
当我这样做时,控制台会记录:
Wed Dec 24 1999 01:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
并且请求是正确的:
1997-12-24T00:00:00.000Z
但是,如果现在有人来自 GMT-0100 等不同的时区,这将再次不起作用。如何正确解决这个问题?
如果有必要,我还会动态更改适配器:
this._adapter.setLocale(this.translateService.currentLang);
【问题讨论】:
-
在您的 console.log... 转换为 UTC 字符串... w3schools.com/jsref/jsref_toutcstring.asp
-
@AkberIqbal 好的,我现在看到它在 UTC 中的样子,但这对我的问题有什么帮助?当我不手动修复它时它仍然是错误的“脏”
-
你需要导入
MatMomentDateModule而不是MatNativeDateModule才能工作{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
标签: angular typescript datepicker angular-material utc