Angularjs ui.bootstrap.timepicker返回的时间比它应该返回的时间少2小时

Angularjs ui.bootstrap.timepicker返回的时间比它应该返回的时间少2小时,angularjs,twitter-bootstrap,Angularjs,Twitter Bootstrap,我使用ui.bootstrap.timepicker在我的应用程序中添加时间间隔。 这是我选择时间的地方,在按钮“插入并保存”“将数据发送到api”上。 问题是,在这里您可以看到所选时间,但是当将它发送到API时,时间比以前少了2小时。 这是请求负载 {from_time: "2017-03-29T11:37:05.541Z", to_time: "2017-03-29T12:42:05.549Z"} from_time:"2017-03-29T11:37:05.541Z" to_time:"

我使用ui.bootstrap.timepicker在我的应用程序中添加时间间隔。 这是我选择时间的地方,在按钮“插入并保存”“将数据发送到api”上。

问题是,在这里您可以看到所选时间,但是当将它发送到API时,时间比以前少了2小时。 这是请求负载

{from_time: "2017-03-29T11:37:05.541Z", to_time: "2017-03-29T12:42:05.549Z"}
from_time:"2017-03-29T11:37:05.541Z"
to_time:"2017-03-29T12:42:05.549Z"
这是我的html

<form class="form" role="form" ng-submit="addRow(fromUrbanTime, toUrbanTime)">
                    <div class="col-md-12">
                        <div class="col-md-6">
                            <div class="col-md-6">
                                <h5><b>{{'FROM'| translate}} (h)</b></h5>
                                <div uib-timepicker ng-model="fromUrbanTime" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></div>
                                    <hr>
                            </div>
                            <div class="col-md-6">
                                <h5><b>{{'TO'| translate}} (h)</b></h5>
                                 <div uib-timepicker ng-model="toUrbanTime" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></div>
                                 <hr>
                                <button type="submit" class="btn btn-default">Insert & Save</button>
                            </div>
                        </div>
                    </div>
                     <pre class="alert alert-info">Time is: {{fromUrbanTime | date:'shortTime' }}</pre>
                     <pre class="alert alert-info">Time is: {{toUrbanTime | date:'shortTime' }}</pre>
                </form>

您的本地时区似乎是GMT+2<代码>日期在JavaScript中创建的对象始终位于本地时区。然而,您的后端似乎在UTC中工作,UTC是GMT+0,因此在后端进行转换。如果是这种情况,那么当后端将日期(包括时区信息)发送回客户端时,它们应该再次在本地时区中创建,这意味着+2小时

例如:

var now = new Date()
console.log(now.toString()); // "Wed Mar 29 2017 15:03:10 GMT+0200 (FLE Daylight Time)"
发送到服务器并转换为ISO格式后,应转换为:

"2017-03-29T13:03:10.000Z"
然后,如果该值已交付给客户:

var now = new Date("2017-03-29T13:03:10.000Z");
console.log(now.toString()); // "Wed Mar 29 2017 15:03:10 GMT+0200 (FLE Daylight Time)"

您能在浏览器开发工具中看到请求吗?我只是想确保问题不在前端。。但是在后面。。您应该看到从浏览器发送的值与您在我的post请求有效负载中选择的值相同,时间缩短了2小时。。。。
var now = new Date("2017-03-29T13:03:10.000Z");
console.log(now.toString()); // "Wed Mar 29 2017 15:03:10 GMT+0200 (FLE Daylight Time)"