Angular UI Bootstrap中的日期问题

时间:2014-07-01 06:29:24

标签: javascript date datepicker angular-ui

我使用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日

我如何解决这个问题?

1 个答案:

答案 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。

希望这有帮助。