我目前有以下脚本:
<script>
if(new Date().getHours() > 17 || (new Date().getHours() == 17 &&
new Date().getMinutes()== 0 && new Date().getSeconds() == 0) &&
(new Date().getHours() < 21 && new Date().getMinutes() < 30
&& new Date().getSeconds() == 0)){
//do nothing.
} else {
$(document).ready(function() {
$(".inline").colorbox({inline:true, open:true, width:"50%"});
});
}
那么 if 中的基本含义是: 如果时间是 17:00 到 21:30,则不执行任何操作,否则显示该框。但发生的情况是,盒子在 18:00 左右停止工作,并在午夜再次开始工作。有人看到这里出了什么问题吗?
最佳答案
请注意,日期中的许多字段(包括小时)都是 0 索引的。这就是您观察到该服务在 18:00 左右停止工作的原因。
我建议使用变量来使条件更易于推理。尝试这样的事情。如果您担心 namespace 污染,请在它周围放置一个闭包。
var now = new Date();
var startQuietPeriod = new Date();
startQuietPeriod.setHours(16); startQuietPeriod.setMinutes(0); startQuietPeriod.setSeconds(0); startQuietPeriod.setMilliseconds(0); // Today at 17:00
var endQuietPeriod = new Date();
endQuietPeriod.setHours(20); endQuietPeriod.setMinutes(30); endQuietPeriod.setSeconds(0); endQuietPeriod.setMilliseconds(0); // Today at 21:30
if (startQuietPeriod < now && now < endQuietPeriod) {
// don't show prompt
} else {
// show prompt
}
关于JavaScript 时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552280/