我怎样才能强制Browser
显示所有date objects
使用Specific Timezone
。像传递Europe/London
一样。有什么办法吗?
更新
在这里,我想要的是所有Jquery Datepicker根据特定时区而不是客户端机器打开日期和时间。
我怎样才能强制Browser
显示所有date objects
使用Specific Timezone
。像传递Europe/London
一样。有什么办法吗?
更新
在这里,我想要的是所有Jquery Datepicker根据特定时区而不是客户端机器打开日期和时间。
您不能“设置”时区偏移量,它是基于系统设置的只读属性。
您可以通过简单地添加客户端时区偏移量,然后添加您想要的任何偏移量来为任何时区偏移量生成时间和日期值(请注意,javascript Date 对象的时区偏移量与通常的值具有相反的意义,因此您将两者相加而不是减去一个并添加另一个)。
例如
// Provide offsetInMintes to add to UTC to get required time,
// e.g. Nepal Standard Time is UTC +05:45 -> +345 minutes
function generateOffsetTime(offsetInMinutes) {
function z(n){return (n<10? '0' : '') + n;}
var d = new Date();
d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + offsetInMinutes);
return [z(d.getHours()),z(d.getMinutes()),z(d.getSeconds())].join(':');
}
alert('The time in Nepal is ' + generateOffsetTime(345));
您可以将自己的方法添加到Date.prototype:
Date.prototype.setOffset = function(offsetInMinutes, offsetName) {
this._offsetInMinutes = offsetInMinutes;
this._offsetName = offsetName;
};
Date.prototype.getOffsetFullDate = (function() {
var months = ('January February March April May June July ' +
'August September October November December').split(' ');
var days = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' ');
return function() {
var d = new Date(+this);
d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + this._offsetInMinutes);
return days[d.getDay()] + ' ' + d.getDate() + ' ' + months[d.getMonth()] +
', ' + this.getFullYear();
}
}());
Date.prototype.getOffsetTime = (function() {
function z(n){return (n<10? '0' : '') + n;}
return function() {
var d = new Date(+this);
d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + this._offsetInMinutes);
return z(d.getHours()) + ':' + z(d.getMinutes()) + ':' +
z(d.getSeconds()) + ' ' + this._offsetName;
}
}());
var d = new Date();
d.setOffset(345, 'NST')
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());
请注意,这会保留日期对象的原始时间值,它会在检索值时调整值,因此可以更改时区以获取同一日期对象的不同值,因此您可以继续:
d.setOffset(600, 'AEST');
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());
d.setOffset(630, 'LHI');
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());
但我仍然认为最好构建自己的日期构造函数,利用内置的 Date 而不是扩展它。
Moment.js是一个很棒的库,可以帮助您实现这一目标。