2011-12-22 52 views
3

有没有办法改变Javascript的getTimezoneOffset返回不同的时区偏移?更改Javascript的getTimezoneOffset以返回不同的时区偏移量?

福克斯例如,我的本地时区是GMT-8,但我想Date.getTimezoneOffset()返回GMT-1,所以我这样做如下:

var timeZone1 = new Date(Date.parse("2011-01-01T00:00:00-01:00")); 
document.write("The local time zone is: GMT " + timeZone1.getTimezoneOffset()/60); 
//show:The local time zone is: GMT-8 

因此,如何使它显示GMT-1?

REFFERENCE链接:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset

回答

6

我不认为JavaScript有一个直接的方式做到这一点,SOOOO你可以自己进行计算或使用最新的图书馆。

http://code.google.com/p/datejs/ datejs是一个不错的图书馆。

要计算自己尝试,

function calcTime(offset) { 
    d = new Date(); 

    //Deal with dates in milliseconds for most accuracy 
    utc = d.getTime() + (d.getTimezoneOffset() * 60000); 
    newDateWithOffset = new Date(utc + (3600000*offset)); 

    //This will return the date with the locale format (string), or just return newDateWithOffset 
    //and go from there. 
    return newDateWithOffset.toLocaleString(); 

} 

然后通过偏移像+1或-5,等等。在calcTime('-1')

+0

感谢Matt.That真的帮助我=)除此之外,我仍然困惑的是,当我创建一个字符串“2011-01-01T00一个Date对象:00:00 -01:00“,我会认为js创建了一个Date对象,并且它的时区已经设置为东1.所以当我使用getTimezoneOffset()时,它应该让我回到指定的值,但不是我的本地时区。只觉得奇怪... – zhkzyth 2011-12-23 12:54:46

+0

我建议使用时区插件的moment.js。 – Gordolio 2014-03-06 23:37:33

-1

getTimezoneOffset()函数总是返回时区机器的偏移量。

3

使用纯JavaScript的快速而快速的解决方案。

var currentTime = new Date(); 
 
var currentTimezone = currentTime.getTimezoneOffset(); 
 
    currentTimezone = (currentTimezone/60) * -1; 
 

 
if (currentTimezone !== 0) 
 
{ 
 
    utc = currentTimezone > 0 ? ' +' : ' '; 
 
    utc += currentTimezone 
 
} 
 

 
alert(utc);

相关问题