HTML和WebAPI之间的输入日期不同

时间:2016-12-20 16:11:30

标签: javascript angularjs html5 asp.net-web-api

我正在使用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

enter image description here

当我在WebAPI控制器中获取对象时出现问题。日期是Angular Controller日期的前一天。它是在图像上的30.12.1990: enter image description here

有什么想法吗?也许我需要格式化它?

1 个答案:

答案 0 :(得分:1)

这是因为时区而出现的。

在您的控制器中,使用您当地的时区(GMT + 1)正确格式化日期。

当您的API收到它时,它不知道如何处理它:您必须指定JSON中返回的日期是在本地时区。

尝试在API startup.cs中指定您的本地时区,例如使用newtonsoft JSON:

json.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;

修改

您应始终将ISO格式的日期传递给API,反之亦然。请参阅:https://wikipedia.org/wiki/ISO_8601