我有一个脚本可以为我提供所选时区的时间。
这是代码:
选择:
<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());
}
当我在选择中选择伦敦(例如)时,它比实际时间早了一个小时。
这可能与全年时钟的快进有关吗?
如果是这样,我该如何处理?
最佳答案
是的,伦敦是 GMT+0,但由于现在是夏令时,所以实际时间是 GMT+1。
如果我是你,我会尝试使用外部库来尝试不同的方法,这样可以为你处理这种变化,这是一个很好的例子: Convert date to another timezone in JavaScript
因此,您无需使用值作为时差,只需使用 <select>
上的时区即可并且 JavaScript 检索当前时间
关于Javascript 时区给了我错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46603449/