根据一天中的时间更改图片

时间:2016-03-24 21:22:26

标签: javascript html date datetime

我正在一个网站上工作,该网站包含许多根据一天中的时间而变化的元素。我希望根据一天中的时间更改图像,一天中的一个图像和一个晚上的图像,所以:

日图= 8:30-00:00

夜间图像= 00:00-8:30

我在Stackoverflow上遇到过这个例子,但是我不确定这对我的浏览器时间是否准确(图像更改应该基于我的时间而不是用户)。

这是一个例子:



$( document ).ready(function() {  
    SetImage();
    window.setInterval(SetImage,1000);
});

function SetImage(){     
    var nowdate = new Date() ;
    
    var waketime = new Date();     
    waketime.setHours(6);
    waketime.setMinutes(30);
    
    var bedtime = new Date();     
    bedtime.setHours(18);
    bedtime.setMinutes(30);
    
    if(waketime < nowdate  && nowdate < bedtime){
         $('#day').show();
         $('#night').hide();
    }else{
         $('#night').show();
         $('#day').hide();
    }
}
&#13;
<img id="night" src="http://1.bp.blogspot.com/_7-b4ZWNPaD8/TThuPK0cvUI/AAAAAAAAAAQ/jCqRshKkJd4/s1600/night-scene.jpg">
<img id="day" src="http://media1.santabanta.com/full1/Events/Independence%20Day/independence-day-67a.jpg">
&#13;
&#13;
&#13;

有什么想法吗?任何帮助都会很棒。谢谢: - )

2 个答案:

答案 0 :(得分:1)

服务器端您检查时间并根据它,向身体添加夜晚或白天(作为类或数据属性)

此外,如果用户未重新加载,您可以运行脚本并进行更新。

window.setInterval(SetImage,5000);   /* set this to at least 10 min */

function SetImage(){     
    var nowdate = new Date();    
    var waketime = new Date();     
    waketime.setHours(6);
    waketime.setMinutes(30);
    
    var bedtime = new Date();     
    bedtime.setHours(18);
    bedtime.setMinutes(30);
    
    if(waketime < nowdate  && nowdate < bedtime) {
         document.body.setAttribute('data-daytime','');
    }else{
         document.body.setAttribute('data-nighttime','');
    }
}
.toggletime {
  padding: 10px;
  background: #eee;
  color: #333;
}
body[data-nighttime] .toggletime {
  padding: 10px;
  background: #333;
  color: #eee;
}
<body data-daytime>
  <div class="toggletime">
    Hey there
  </div>
</body>

答案 1 :(得分:0)

客户时间:

如果你在谈论客户时间,这很好。但我建议将使用的间隔改为10分钟或更长时间。

服务器时间:

但是如果你在谈论服务器时间,那么响应将是否定的。您必须通过后端代码(例如php,java,node ... )来传递服务器的时间,您可以使用给定api的时间,如下所示:

 <script type="text/javascript">
  function myCallback(json) {
    alert(new Date(json.dateString));
  }
</script>
<script type="text/javascript" src="http://timeapi.org/utc/after+one+hour.json?callback=myCallback"></script>

仅当您使用JSONP时才能使用此工作。我们所做的是请求包含服务器时间的网址(在阿姆斯特丹):http://www.timeapi.org/utc/after+one+hour