我正在使用Angular和WebAPI进行网络应用。我有一个奇怪的问题,Angular Controller和WebAPI控制器之间的日期不同。在我的html页面上,我有一个日期类型的输入:
<input id="signupDateofBirth" ng-model="dateofBirth" placeholder="Date of birthday" type="date" max="1998-01-01" min="1900-12-31" class="form-control">
我们假设日期是1990年12月31日。我在我的角度控制器中分配它,而调试日期是正确的:31.12.1990:
DateOfBirth: $scope.dateofBirth
DateOfBirth: Mon Dec 31 1990 00:00:00 GMT+01
当我在WebAPI控制器中获取对象时出现问题。日期是Angular Controller日期的前一天。它是在图像上的30.12.1990:
有什么想法吗?也许我需要格式化它?
答案 0 :(得分:1)
这是因为时区而出现的。
在您的控制器中,使用您当地的时区(GMT + 1)正确格式化日期。
当您的API收到它时,它不知道如何处理它:您必须指定JSON中返回的日期是在本地时区。
尝试在API startup.cs中指定您的本地时区,例如使用newtonsoft JSON:
json.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
修改强>
您应始终将ISO格式的日期传递给API,反之亦然。请参阅:https://wikipedia.org/wiki/ISO_8601