是否有浏览器扩展来更改Date对象返回的时间?

问题描述 投票:1回答:2

是否有浏览器扩展来更改JavaScript的Date对象返回的内容而不更改系统时钟?

当你创建宣传册时,这会出现很多问题。您经常希望根据当前日期向访问者显示特定促销或创意处理。如果您正在使用访问者的系统时钟,测试会变得烦人,因为您必须更改自己的系统时钟,这当然会弄乱您的日历提醒,而上帝知道还有什么。

javascript datetime browser-extension
2个回答
2
投票

虽然在生产中不可取,但在开发环境中,您可以执行以下操作:

var dateYouWant = 1363798981693; 
Date.prototype.getTime = function() { 
    return dateYouWant;
};
console.log( (new Date).getTime() );

基本上,覆盖Date()函数以返回您指定的任何时间。


0
投票

既然你回复了我的评论说你会把包装函数称为后备,那么让我提供这个功能。我讨厌修改本机对象,所以我会走这条路:

Here is a jsfiddle to play with.

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
© www.soinside.com 2019 - 2024. All rights reserved.