根据时间/时间表交换div可见性

在我的页面上我有两个div …一个div我希望从上午10点到下午6点(服务器时间)可见….而另一个div则是剩下的几小时。

我尝试了一堆搜索,找到某种javascript或jquery内容交换器,没有任何运气..感谢您的任何建议?

content
content

我只能使用以下php来实现这一点:

 = 02 && $hour < 05) { echo '
content block one
'; } else { echo '
content block two
'; }?>

然而,如果我想从晚上8点到凌晨4点显示div,这个解决方案似乎不起作用…这是因为它跨越了一天以上? 谢谢你的任何建议。

编辑

您在评论中提到的案例很棘手。 所以这是我修改后的修改答案:

  Target date....: %s
Time to go.....: %d hours, %d minutes, %d seconds ", date("Ymd h:i:s A", $s), date("Ymd h:i:s A", $s0), $dh, $dm, $ds ); } ?>

如果需要根据服务器时间设置可见性,则应显示并隐藏服务器端的div。 因为没有JavaScript可以获得服务器时间而是客户端(可能位于远程位置)浏览器。

如果您的站点中有一个可以返回服务器时间的脚本,那么您可以实现这一点,但我认为从头开始有条件地标记HTML(php,jsp,无论如何)代码会更为明智。

只需使用带有Date() $(document).ready()处理程序(例如getHours()方法),就像我使用以下代码一样: jsfiddle.net/c2TPZ 。 默认情况下,您可以隐藏这两个块,除非您的JS设置CSS样式以使其可见,例如。 像这样:

 $('#box1').css({display: 'block'}); // sets display to 'block', eg. from 'none' 

我通常会建议在服务器上完成此操作,但在Javascript中它看起来像这样:

 var pHour = Date.getHours(); if ((pHour >= 10) && (pHour < 18)) { $('.scheduled-target').show(); } 

这假定您默认情况下将'.scheduled-target'显示为:none。

这也是客户当地时间。 如果你想要一个绝对时间,你需要从Date.getUTCHours()开始,并为你的Timezone / Locale做偏移。

 $(document).ready(function() { var d = new Date(); if (d.getHours() >= 10 && d.getHours() < 18) { $(#div1).show(); $(#div2).hide(); } else { $(#div1).hide(); $(#div2).show(); } }); 

编辑:哎呀,我错过了关于服务器时间的部分。 这不可靠。 相反,您应该使用服务器端脚本来设置它们。 不知道你在服务器端使用的是什么,但是例如在PHP中:

 $hour = strftime("%H"); if ($hour >= 10 && $hour < 18) { $div1_class = "show"; $div2_class = "hide"; } 

在你的css中,类.hidedisplay: none;

理论上它就像这样简单:

HTML

10-6


other time of day

JavaScript的

current_hour = ;
if(current_hour >= 10 && current_hour < 18) $('.h10-6').show();
else $('.h-other').show();

CSS

.h { display: none; }