2012-01-05 42 views
-1

我想調整Date對象始終爲4小時的偏移量。我將如何實現這一目標?更改日期以使所有小時數偏移4小時

var d = new Date(); 
// d would be 4 hours in the past 
+1

你不能,沒有一些真難看黑客修復它。你試圖解決的更大的問題是什麼?此外,改變'日期'的行爲打破了記錄在案的現有合同,違反了最不驚人的原則,以及被廣泛認爲是好事的一大堆其他事物。 – 2012-01-05 21:26:17

+3

'開始 - >控制面板 - >日期/時間設置' – 2012-01-05 21:26:43

+0

你/實際/正在做什麼? – Dan 2012-01-06 03:23:43

回答

0

您可以使用特定日期創建日期對象。剛剛從當前時間減去正確毫秒並傳遞到日期功能:

var d = new Date(new Date().getTime() - 1000*60*60*4); 

,或者您也可以手動設置時間

var d = new Date(); 
d.setHours((12 + (d.getHours() - 4))%12) 
+0

這隻改變了一個'Date'實例,我認爲這不是OP想要的。 – 2012-01-05 21:26:51

+1

@MДΓΓБДLL我明白你的意思,但這是它應該如何完成的。使用日期對象的實例。 – 2012-01-05 21:31:32

+0

我需要修改Date對象。這很醜陋,但我必須做的才能完成這項工作。謝謝, – user721081 2012-01-09 23:34:22

0

事情是這樣的:

d.setHours(d.getHours()-4); 
+0

這隻改變了一個'Date'實例,我認爲這不是OP想要的。 – 2012-01-05 21:27:15

+0

我需要對所有Date對象進行更改。 – user721081 2012-01-09 23:53:05

2
Date.withOffset = function(offset){ 
    var r = new Date(); 
    r.setHours(r.getHours()+offset); 
    return r; 
}; 

var d = Date.withOffset(-4) 
// d would be 4 hours in the past 

你可能會想出一個更好的名字。

如果你想打破你的頁面,你當然可以用在所有的javascript:

Date = function() { 
    var old = Date; 

    function broken() { 
     var r = new old(); 
     r.setHours(r.getHours()-4); 
     return r; 
    } 
    broken.fix = function() { 
     Date = old; 
    }; 

    return broken; 
}(); 

然後,您可以通過調用Date.fix()

+0

我無法修改系統時間。我正在使用機頂盒,時間總是在格林尼治標準時間。對於所有Date對象,我需要過去4個小時的時間。我知道這是醜陋的,違背最佳做法,但這是我必須做的...... – user721081 2012-01-09 23:25:46

+0

上述日期功能不起作用。 – user721081 2012-01-09 23:41:31