Javascript 时区给了我错误的时间

标签 javascript html

我有一个脚本可以为我提供所选时区的时间。

这是代码:

选择:

<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 &amp; Canada)</option>
    <option value="-7.0">(GMT -7:00) Mountain Time (US &amp; Canada)</option>
    <option value="-6.0">(GMT -6:00) Central Time (US &amp; Canada), Mexico City</option>
    <option value="-5.0">(GMT -5:00) Eastern Time (US &amp; 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/

相关文章:

javascript - 我将如何检测特定 iframe 外部的 onclick 事件?

javascript - 自定义滚动条拇指超出范围

javascript - 在不使用循环的情况下查找数字数组的项目

javascript - Angular 可以从一个 json 文件中获取数据,但不能从一个单独的文件中获取数据?

html - 如何使用垂直偏移将 Bootstrap 列拉到顶部?

javascript - 将带有表单数据的 GeoJSON 数据发布到 Rails 4 应用程序

javascript - foo.prototyp.x = & foo.prototype = {x : } 之间的区别

html - 实现 HTML5 视频的最佳方式

asp.net - asp.net 页面中的 css 粘性页脚

href 属性中的 JavaScript 函数调用