我有一个脚本可以为我提供所选时区的时间。
以下是代码:
选择:
<select id="ddlViewBy">
<option value="-12.0">(GMT -12:00) Eniwetok, Kwajalein</option>
<option value="-11.0">(GMT -11:00) Midway Island, Samoa</option>
<option value="-10.0">(GMT -10:00) Hawaii</option>
<option value="-9.0">(GMT -9:00) Alaska</option>
<option value="-8.0">(GMT -8:00) Pacific Time (US & Canada)</option>
<option value="-7.0">(GMT -7:00) Mountain Time (US & Canada)</option>
<option value="-6.0">(GMT -6:00) Central Time (US & Canada), Mexico City</option>
<option value="-5.0">(GMT -5:00) Eastern Time (US & Canada), Bogota, Lima</option>
<option value="-4.0">(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz</option>
<option value="-3.5">(GMT -3:30) Newfoundland</option>
<option value="-3.0">(GMT -3:00) Brazil, Buenos Aires, Georgetown</option>
<option value="-2.0">(GMT -2:00) Mid-Atlantic</option>
<option value="-1.0">(GMT -1:00 hour) Azores, Cape Verde Islands</option>
<option value="0.0">(GMT) Western Europe Time, London, Lisbon, Casablanca</option>
<option value="+1">(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris</option>
<option value="+2.0">(GMT +2:00) Kaliningrad, South Africa</option>
<option value="+3.0">(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg</option>
<option value="+3.5">(GMT +3:30) Tehran</option>
<option value="+4.0">(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi</option>
<option value="+4.5">(GMT +4:30) Kabul</option>
<option value="+5.0">(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent</option>
<option value="+5.5">(GMT +5:30) Bombay, Calcutta, Madras, New Delhi</option>
<option value="+5.75">(GMT +5:45) Kathmandu</option>
<option value="+6.0">(GMT +6:00) Almaty, Dhaka, Colombo</option>
<option value="+7.0">(GMT +7:00) Bangkok, Hanoi, Jakarta</option>
<option value="+8.0">(GMT +8:00) Beijing, Perth, Singapore, Hong Kong</option>
<option value="+9.0">(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk</option>
<option value="+9.5">(GMT +9:30) Adelaide, Darwin</option>
<option value="+10.0">(GMT +10:00) Eastern Australia, Guam, Vladivostok</option>
<option value="+11.0">(GMT +11:00) Magadan, Solomon Islands, New Caledonia</option>
<option value="+12.0">(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka</option>
</select>
<button onclick="getTime()">Get Time</button>
和javascript函数:
function getTime() {
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;
var offset = strUser;
var d = new Date();
localTime = d.getTime();
localOffset = d.getTimezoneOffset() * 60000;
utc = localTime + localOffset;
var nd = new Date(utc + (3600000*offset));
utc = new Date(utc);
alert(nd.toLocaleString());
}
当我在选择它时选择伦敦(例如)它比我实际上提前一小时。
这可能与全年的时钟倒退有关吗?
如果是这样,我该如何处理?
答案 0 :(得分:1)
是的,伦敦是格林尼治标准时间+0但是现在是夏令时,实际时间是GMT + 1.
如果我是你,我会尝试一种不同的方法,使用外部库,可以为你处理这些变化,这是一个很好的例子: Convert date to another timezone in JavaScript
因此,您只需在<select>
上使用时区,而不是将值作为时差,而javascript将检索当前时间
答案 1 :(得分:0)
toLocaleString
输出您当地的时间,并考虑到日期的时区偏差
您不希望使用该偏移量。
您需要使用Data对象的UTC getter手动构建输出字符串,例如Date.prototype.getUTCHours()
。