更改GMT(时区)的问题?

时间:2011-08-12 19:30:29

标签: javascript jquery timezone dst

我创建了一个小脚本来显示时间(UTC-+3.5)。问题是每年有六个月changes GMT(+4.5, +3.5) in Iran,而且时间被来回拉动(Daylight Saving
我如何设置自己的时钟在伊朗改变GMT ?我该怎么办? (现在伊朗的GMT为+4.5)

示例: my code-jsfiddle

var int = self.setInterval("clock()", 1000);

function clock() {
    var d = calcTime('+4.5')
    var t = d.toLocaleTimeString();
    document.getElementById("clock").innerHTML = t;
}

function calcTime(offset) {
    d = new Date();
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    nd = new Date(utc + (3600000 * offset));

    return nd;
}

尊重

1 个答案:

答案 0 :(得分:0)

Fiddle Example

<script type="text/javascript">
var int = self.setInterval("clock()", 1000);

function clock() {
    var d = calcTime('+4.5')
    var t = d.toLocaleTimeString();
    document.getElementById("clock").innerHTML = t;
}

function calcTime(offset) {
    d = new Date();
    ds = new Date(); // new Daylight Savings Time object
    ds.setMonth(9); // Set month to september
    ds.setDate(21); // set day to 21st
    if(d > ds){ // if current date is past the daylight savings date minus one from the offset
        offset = eval(offset - 1);
    }
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    nd = new Date(utc + (3600000 * offset));

    return nd;
}
</script>

<b id="clock"></b>

这很有效。它将检查日期是否目前是9月21日,如果是,它将从格林威治标准时间-4.5,否则3.5

这不是我写过的最干净的代码,我只是修改了你的代码。但是你现在可以看到它是如何完成的。