当我从 Angular 材料日期选择器发布日期时,ASP.NET Core Web API 始终收到前一天的日期。
我发布了在表单控件中设置的日期,我将其分配给我的日期属性,如下所示
scheme.date1 = this.formControl.date1.value;
当我在 mat 日期选择器日历中选择
27th March 2024
日期时,this.formControl.date1.value
会在控制台中打印此日期,这是正确的日期
Wed Mar 27 2024 00:00:00 GMT+0530 (India Standard Time)
时区始终显示正确,我的服务器位于
GMT+0530
时区。
但是后来我在 Web API 方法中收到数据,它是
26th March 2024
即比我从前端挑选和发送的数据早一天。
我尝试搜索解决方案并找到了很多链接,但找不到它的确切解决方案,大多数链接都是关于显示正确的日期。这些是我寻找的资源
https://github.com/angular/material/issues/4636
Angular Material DatePicker:日期变为所选日期的前一天
Angular Material Datepicker 返回确切日期前一天
https://angularmaterial.wordpress.com/2016/04/04/fix-in-md-datepicker-to-get-theselected-date/
经过大量研究终于找到了解决方案。
我必须将其添加到提供者中
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },
这样,我在日期选择器中选择的任何日期仍然具有 GMT 值,但它会达到
00:00:00
时间。
例如,我现在处于
+05:30
GMT,所以当我在添加此提供程序后选择日期时,它有时间 5:30 PM
和 GMT +5:30
值,当我在服务器上收到时,它会达到具有相同日期的 00:00:00
时间正如我所选择的。