2012-01-05 44 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