我使用Angular UI Date选择器。当我选择日期 2015年7月15日时,模型值分配如下(我在印度GMT +5:30)
2015-07-14T18:30:00.000Z
我用于日期选择器的代码
<input type="text" class="form-control" id="testDate" name="testDate"
ng-model="testDate" datepicker-popup="dd-MMMM-yyyy"
is-open="opened" datepicker-options="dateOptions"
date-disabled="disabled(date, mode)" />
在服务器端(UTC格式),当我访问新日期(&#39; 2015-07-14T18:30:00.000Z&#39;)之类的日期时,它会给出我的数据为 2015年7月14日而不是 2015年7月15日
我如何解决这个问题?
答案 0 :(得分:0)
问题是UTC时间与UTC时间的“日期”不同于当地时间的“日期”的当地时间。
如果要查看当地时间,请尝试在服务器上转换为本地时间。似乎如果你是+5:30它将决定到2015年7月15日午夜。所以对于UTC来说它是正确的,但是当地时间不正确,因为你需要+5:30。我不知道你在服务器端运行的语言是什么,但是应该有办法将日期的“种类”设置为本地并指定文化。
最佳做法是将时间存储为UTC,并在将其呈现给用户之前仅转换为本地权利。因此,我会将其作为“2015-07-14T18:30:00.000Z”存储在数据库中,并且在检索数据时,只需将“2015-07-14T18:30:00.000Z”作为您需要的当地时间返回。
以下是一些自动将模型更改为本地时间的代码:
$scope.$watch('testDate', function() {
$scope.testDate= $filter('date')($scope.testDate, 'MM/dd/yyyy');
});
请务必在控制器中注入$ filter。
希望这有帮助。