Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据当前时间在3个位置更改3个背景图像_Javascript_Jquery_Timezone - Fatal编程技术网

Javascript 根据当前时间在3个位置更改3个背景图像

Javascript 根据当前时间在3个位置更改3个背景图像,javascript,jquery,timezone,Javascript,Jquery,Timezone,我在一个页面上有3个图像,每个图像都需要更改以反映该位置的时间(白天或晚上) 我得到了它,所以如果在每个时区的晚上7点到早上7点之间,图像会变为晚上,但是我想要它,如果在英国晚上7点之后,英国图像是晚上,但纽约和洛杉矶图像仍然是白天,因为它会在那个位置 这是我当前的代码: $(document).ready(function(){ setInterval(function() { var hour = new Date().getHours();

我在一个页面上有3个图像,每个图像都需要更改以反映该位置的时间(白天或晚上)

我得到了它,所以如果在每个时区的晚上7点到早上7点之间,图像会变为晚上,但是我想要它,如果在英国晚上7点之后,英国图像是晚上,但纽约和洛杉矶图像仍然是白天,因为它会在那个位置

这是我当前的代码:

    $(document).ready(function(){
     setInterval(function() {
        var hour = new Date().getHours();
        if (hour > 7 && hour <= 19) {
            // morning
            $('.contact').addClass('day');
        } else {
            // night
            $('.contact').addClass('night');
        }
        }, 1000);
    });
$(文档).ready(函数(){
setInterval(函数(){
var hour=新日期().getHours();

如果(hour>7&&hour最简单的方法是在
元素中向html添加偏移量数据值。联系
-元素。例如,伦敦是GMT+0,给它
数据偏移量=“0”
纽约是GMT-5给它
数据偏移量=“-5”

用户可以这样使用jQuery:

$(document).ready(function(){
 setInterval(function() {
    $('.contact').each(function() {
        var date = new Data();
        var hour = (date.getHours() + date.getTimezoneOffset() * 60000) + parseInt($(this).data('offset'));
        if (hour > 7 && hour <= 19) {
            // morning
            $('this').addClass('day');
        } else {
            // night
            $('this').addClass('night');
        }
        }
    }, 1000);
});
$(文档).ready(函数(){
setInterval(函数(){
$('.contact')。每个(函数(){
变量日期=新数据();
var hour=(date.getHours()+date.getTimezoneOffset()*60000)+parseInt($(this.data('offset'));

如果(hour>7&&hour要实现此目的,您可以获取当前UTC时间,然后从该中心日期添加或减去每个位置的时区偏移量。然后,您可以循环查看
。使用
data
属性联系
元素,以指定每个位置的偏移量,并基于该偏移量更新元素的类别。尝试是:

$(文档).ready(函数(){
函数setClasses(){
var now=新日期();
$('.contact')。每个(函数(){
var$el=$(本);
var local=新日期(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()+$el.data('utcoffset'),now.getUTCMinutes());
var hour=local.getHours();

var isMorning=hour>7&&hour实现这一点最简单的方法是使用UTC时间,然后添加或减去要显示的位置的偏移量。@Rorymcrossan但这是本地执行的,它应该返回本地时间,不是吗?为什么这段代码不能按原样工作?我看不出它现在有任何问题。或者我是这样做的遗漏了什么?因为它改变了所有3张图片(伦敦、纽约和洛杉矶)例如,在英国,晚上7点之后。但是,在英国,纽约和洛杉矶晚上7点之后不是晚上,所以我希望英国是晚上,纽约和洛杉矶仍然是白天…@JeremyThille是的,但它只工作一次。OP希望它工作三次。啊,我现在明白了。我们需要在同一页上有所有三次。如果用户在不同的时间,这不会失败吗ne而非英国?例如,用户在澳大利亚(可能是UTC+10)。@agarwalankur85很好。
New Date().getHours()
需要将
getTimezoneOffset
设置为GMT0以防止出现这种情况。我会编辑就是这样一个!…似乎有效,我在英国,白天是pic,纽约和洛杉矶是夜晚。感谢Rory和所有帮助过我的人。你可以通过更改系统时间来测试它。你是对的。因为日期是通过引用给出的,而不是值,所以只需cre使用新变量修改日期是行不通的。我更新了答案,以便在循环的每次迭代中计算UTC日期。这也有助于理顺逻辑:)
$(document).ready(function(){
 setInterval(function() {
    $('.contact').each(function() {
        var date = new Data();
        var hour = (date.getHours() + date.getTimezoneOffset() * 60000) + parseInt($(this).data('offset'));
        if (hour > 7 && hour <= 19) {
            // morning
            $('this').addClass('day');
        } else {
            // night
            $('this').addClass('night');
        }
        }
    }, 1000);
});