我有一个日期选择器,用户在没有选择时间的情况下选择日期,日期在我的数据库中正确保存但是当我显示它时,它显示了一天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日所以增加了一天。
我该如何解决这个问题?
答案 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);
}
检查这是否有帮助