【问题标题】:problem with changes GMT( time zone )?更改 GMT(时区)的问题?
【发布时间】:2011-10-26 02:23:35
【问题描述】:

我创建了一个小脚本来显示时间(UTC-+3.5)。问题在于changes GMT(+4.5, +3.5) in Iran 一年中每六个月一次,并且更改时间来回拉动 (Daylight Saving)
我如何通过更改伊朗的格林尼治标准时间来设置自己的时钟?我该怎么办? (现在伊朗的 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;
}

尊重

【问题讨论】:

  • 请确认,您想自动调整为夏令时吗?

标签: javascript jquery timezone dst


【解决方案1】:

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 日,如果是,它将从 GMT 开始 -4.5,否则为 3.5

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

【讨论】:

  • 另外请注意,您将需要检查另一端。此代码将从 9 月 21 日 > 12 月 31 日开始工作,但是从 1 月到 3 月,它将将此视为 4.5 而不是 3.5...仅供参考
  • 谢谢。但是这个(小提琴示例)没有显示。请告诉我示例中的最佳方法
  • 试试这个jsfiddle.net/rlemon/HZmPg/11 *你必须把self.setInterval("clock()", 1000); 中的引号全部拿掉@我忘了在我的小提琴中这样做;)
  • jsfiddle.net/HZmPg/15 这是我的最后一次更新。我的示例向您展示了如何应用夏令时转换。它并不是您的剪切和粘贴解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 2014-10-25
  • 1970-01-01
相关资源
最近更新 更多