我们正在开发需要在自定义时区中显示所有日期的应用程序。我使用使用 javascript Date 的外部库(GWT ...)。我无法覆盖 GWT 代码。此外,javascript Date 似乎是设置自定义时区的更好地方。我们首先尝试使用原型机制覆盖“访问器”:
var original_getUTCHours = Date.prototype.getUTCHours;
Date.prototype.getUTCHours = function(){
// -4 for the time zone offset
return original_getUTCHours.call(this)-4;
}
var myDate = new Date();
alert(myDate.getUTCHours());
但是这种机制似乎实现起来很长,因为有很多“访问器”需要覆盖。每个访问器都需要特定的算法来处理偏移量。
所以我们尝试使用原型机制来覆盖 Date 构造函数。
var original_date_constructor = Date.prototype.constructor;
function Date(){
var now = original_date_constructor;
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds())
}
但是我们在 Chrome 调试器中得到了这个错误:
Uncaught TypeError: Object function Date(){
var now = original_date_constructor;
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds());
} has no method 'getUTCFullYear'
是否可以覆盖 Date 构造函数,正确的方法是什么?
谢谢