Angular在显示日期时添加一天(dd / MM / yyyy)

时间:2017-06-06 08:09:23

标签: angularjs

我有一个日期选择器,用户在没有选择时间的情况下选择日期,日期在我的数据库中正确保存但是当我显示它时,它显示了一天ahaid,当我查找问题时发现它& #39;许多人面临的时区问题,但我不太明白如何在我的代码中修复它:

<tbody>
   <tr ng-repeat="ft in ftListesorted">
      <td>{{ft.NomProjet}}</td>
      <td>{{ft.NomTache}}</td>
      <td>{{ft.Datefeuillestemps |  date : 'dd/MM/yyyy' }}</td>
   </tr>
</tbody> 

我得到了&#34; ft.Datefeuillestemps&#34;从我的数据库中,默认时间始终设置为T00:00:00。

例如,这里是我的日期存储在数据库中的方式: 2017-05-17 00:00:00.0000000 ,这就是我在视图中所看到的: 2017年5月18日所以增加了一天。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以从对象中减去(new Date())。getTimezoneOffset()(假设数据库中的日期是GMT),但这并不完美。当时区因夏令时变化时,您仍然会遇到问题。

答案 1 :(得分:1)

$scope.passdate = function (dt) {
    var targetTime = new Date(dt);
    var timeZoneFromDB = -7.00; //time zone value from database
    //get the timezone offset from local time in minutes
    var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset();
    //convert the offset to milliseconds, add to targetTime, and make a new Date
    var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000);
    $scope.ISODateString(offsetTime);
}

检查这是否有帮助