是否有浏览器扩展来更改 JavaScript 的 Date 对象返回的内容而不更改系统时钟?
当您创建小册子软件时,经常会出现这种情况。您通常希望根据当前日期向访问者展示特定的促销或创意待遇。如果您使用访问者的系统时钟,测试会变得很烦人,因为您必须更改自己的系统时钟,这当然会打乱您的日历提醒,天知道还有什么。
是否有浏览器扩展来更改 JavaScript 的 Date 对象返回的内容而不更改系统时钟?
当您创建小册子软件时,经常会出现这种情况。您通常希望根据当前日期向访问者展示特定的促销或创意待遇。如果您使用访问者的系统时钟,测试会变得很烦人,因为您必须更改自己的系统时钟,这当然会打乱您的日历提醒,天知道还有什么。
虽然在生产环境中不建议使用,但在开发环境中,您可以执行以下操作:
var dateYouWant = 1363798981693;
Date.prototype.getTime = function() {
return dateYouWant;
};
console.log( (new Date).getTime() );
本质上,覆盖Date()
函数以返回您指定的任何时间。
既然您回复我的评论说您将调用包装函数作为后备,那么让我提供该函数。我讨厌修改原生对象,所以我会走这条路:
function getScaledDate(offset){
// if you don't pass in an offset
if (offset === undefined) {
// check to see if there is a global one defined
if (typeof GLOBAL_DATE_OFFSET !== "undefined") {
offset = GLOBAL_DATE_OFFSET;
}
// otherwise, don't add an offset
else {
offset = 0;
}
}
return new Date(+new Date + offset);
}
// USAGE:
var now = getScaledDate();
var oneHourFromNow = getScaledDate(1000 * 60 * 60);
var oneHourAgo = getScaledDate(-1000 * 60 * 60);
// GLOBAL OFFSET USAGE:
window.GLOBAL_DATE_OFFSET = 1000 * 60 * 60 * 7; // scale everything 7 hours foward
var scaledDate = getScaledDate(); // will use global offset