2013-03-20 2 views
1

시스템 시계를 변경하지 않고 JavaScript의 Date 객체에 의해 반환되는 것을 변경하기위한 브라우저 확장 기능이 있습니까?Date 객체가 반환 한 시간을 변경하는 브라우저 확장이 있습니까?

이것은 브로셔 제작을 만들 때 많이 발생합니다. 방문자에게 현재 날짜를 기준으로 특정 프로모션이나 창의적인 대우를 보여주고 싶을 때가 있습니다. 방문자의 시스템 시계를 사용하는 경우 자체 시스템 시계를 변경해야하기 때문에 테스트가 성가시다. 물론 캘린더 알림을 망칠 수 있고 신이 무엇을 알고 있는지 알 수있다. 생산에 바람직하지 동안

+0

입니다? 이 새로운 날짜 객체를 가리 키도록 많은 코드를 업데이트해야한다는 것을 알고 있습니다. – lbstr

+0

그건 내 후퇴 일 것입니다. 코드를 추가하지 않고 이러한 종류의 동작을 테스트 할 수있는 반복 가능한 방법을 원합니다. – FriendOfFuture

답변

2

는 DEV 환경에서 다음을 수행 할 수 있습니다 :

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

기본적으로 사용자가 지정한 어떤 시간 반환 할 Date() 기능을 오버라이드 (override).

+1

나는 최고의 대답은 테스터가 브라우저에서 시간을 설정하는 데 사용할 수있는 북마크 렛으로 포장 된 것과 같을 것이라고 생각합니다. – FriendOfFuture

0

대체로 래퍼 함수를 ​​호출한다고하는 내 의견에 답신 했으므로 해당 기능을 제공하겠습니다. 나는 기본 개체를 수정 싫어, 그래서 나는이 길 갈 것 : 당신이 대신 기본 Date 객체 덤비는의 새로운 사용자 정의 함수를 호출 할 수있는 옵션

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