使AngularUI UI-Date datepicker使用UTC时间

时间:2014-08-06 23:33:46

标签: javascript angularjs datepicker angularjs-directive angular-ui

似乎datepicker使用了本地化时间,但是当我调用后端时,我需要它使用UTC时间。我通过使用以下函数将值发布到服务器之前调整值来解决此问题:

function adjustDateForTimeOffset(dateToAdjust) {
    var offsetMs = dateToAdjust.getTimezoneOffset() * 60000;
    return new Date(dateToAdjust.getTime() - offsetMs);
}

或仅仅通过在服务中争吵我的约会。但是,我还有一些默认值,我想在我的应用程序中加载时使用,我需要这些日期为UTC并显示在datepicker输入框中。但是,当我这样做时,日期始终是输入框中的前一天,因为ui-date使用当地时间。

有没有办法将ui-date修改为始终在UTC时间而不是本地时间运行?

我已经在互联网上搜索了这个问题的答案,但只是一直在寻找修改日期的方法,但是在发送到服务器之前一直想找到更改日期的方法,但这并没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

javascript的日期对象始终使用本地时区。

只要创建日期对象,无论输入日期如何,都将使用本地时区偏移量显示。

您不会说出如何将日期发送到您的服务器,但我认为您只是发送日期字符串?

在这种情况下,您可以使用Date.prototype.toISOString()方法,因为这将为您提供ISO标准日期字符串,这意味着它是UTC。

// this lets you convert a specific UTC date into a standard local date
var date = new Date(Date.UTC(......));

// send to server
$http.post('url', { date: date.toISOString() });

更多信息,请参阅:
http://www.w3schools.com/jsref/jsref_toisostring.asp

http://www.w3schools.com/jsref/jsref_utc.asp