似乎日期选择器使用本地化时间,但我需要它使用UTC时间,当我调用后端。我通过在使用以下函数将其发布到服务器之前调整值来解决此问题:
function adjustDateForTimeOffset(dateToAdjust) {
var offsetMs = dateToAdjust.getTimezoneOffset() * 60000;
return new Date(dateToAdjust.getTime() - offsetMs);
}
或者只是在服务中争吵我的约会对象。然而,我也有一些默认值,我想在我的应用程序中使用加载,我需要这些日期是在UTC和显示在日期选择器输入框。但是,当我这样做时,日期总是在输入框中的前一天,因为ui-date使用当地时间。
是否有办法修改ui-date运行在UTC时间,而不是当地时间?
我已经在互联网上搜索了这个问题的答案,但只是不断寻找修改日期的方法,但只是不断寻找在将其发送到服务器之前更改日期的方法,但这并不能解决我的问题。
javascript的date对象总是使用本地时区。
一旦创建了date对象,不管输入的日期是什么,它都将使用本地时区偏移量显示。
你没有说你是如何发送你的日期到你的服务器,但我假设你只是发送一个日期字符串?
在这种情况下,你可以使用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