我创建了一个小脚本来显示时间(UTC-+3.5
)。问题是伊朗每半年改变一次GMT(+4.5, +3.5),改变时间是来回拉的(Daylight Saving
)
我如何设置自己的时钟与改变GMT在伊朗?我该怎么办?
示例: 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;
}
与
小提琴示例
<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
这不是我写过的最干净的代码,我只是修改了你的。但是现在你可以看到它是如何完成的。