javascript - 使用 JavaScript 将时区偏移数字列表更改为当前时间

标签 javascript html jquery

我正在表格中显示名称及其时区偏移量的列表。偏移量数字是其时区与 UTC 的偏移量。我需要使用 JavaScript 或 jQuery 更改所有偏移量以显示该人所在时区的当前时间。

我希望发生的是偏移量数字将替换为 calcTime 函数中的当前日期/时间...知道我做错了什么吗?

这是我的代码:

<div class="name">John Doe</div><div class="timezone">-5</div>
<div class="name">Jane Doe</div><div class="timezone">3</div>
<div class="name">Jim Smith</div><div class="timezone">7</div>
<div class="name">Cathy Jones</div><div class="timezone">-3</div>

<script>
$(document).ready(function() {
    setTimeout(() => {
        function calcTime(offset) {
            // create Date object for current location
            d = new Date();
            // convert to msec
            // add local time zone offset
            // get UTC time in msec
            utc = d.getTime() + (d.getTimezoneOffset() * 60000);
            // create new Date object for different city
            // using supplied offset
            nd = new Date(utc + (3600000*offset));
            // return time as a string
            return "The local time is " + nd.toLocaleString();
        }

        $(".timezone").each(function(){
            h = $(this).find(".timezone").text();
            element.innerHTML = calcTime(h); 
        //alert(calcTime('-5'));
        });
    }, 1000);
});
</script>

最佳答案

我认为这就是您试图实现的目标(进行重大更改)。

请注意使用 setInterval() 而不是设置超时以及对 HTML 的结构更改。

const utc = document.querySelector('.utc');
const collection = document.querySelectorAll('.timezone');
const outputs = document.querySelectorAll('.output');
const localeTZoffSet = new Date().getTimezoneOffset()/60 * 3600000;

setInterval(() => {
  utc.textContent = calcTime(0);
  collection.forEach((element, idx) => {
    outputs[idx].textContent = calcTime(element.textContent);
  });
});

function calcTime(offset) {
  return "The local time is " + new Date(Date.now() + localeTZoffSet + (3600000 * offset)).toLocaleTimeString();
}
<div>UTC: <span class="utc"></span></div>
<div class="name">John Doe - <span class="output"></span></div>
<div class="timezone">-5</div>
<div class="name">Jane Doe - <span class="output"></span></div>
<div class="timezone">3</div>
<div class="name">Jim Smith - <span class="output"></span></div>
<div class="timezone">7</div>
<div class="name">Cathy Jones - <span class="output"></span></div>
<div class="timezone">-3</div>

关于javascript - 使用 JavaScript 将时区偏移数字列表更改为当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65818270/

相关文章:

javascript - ReactJS Props 和冒泡

html - 如何在两侧实现多种颜色和对 Angular 线形式的背景?

javascript - 使用 html CSS 和 javascript 创建轮播的问题

javascript - 使用 Jquery 设置最小高度以避免移动问题

javascript - 如何使用javascript动态添加类

javascript - 如何使用javascript从数据库调用的子菜单列表中选择项目

javascript - Moment Js问题: isoWeekYear & isoWeek method behavior

html - 你如何给 iframe 100% 高度

javascript - jQuery page on/live/bind pageinit, pageshow

javascript - jQuery slideDown()动画不起作用