我想检查一下我的时间是在晚上10点到早上6点之间还是在12点到6点之间 我写了相同的代码,代码工作,但我不知道它是否仍然适用于所有情况。 我也觉得代码应该高效且简单,足以解决这个问题。
我提供了时区(数字,例如3表示+3)和时间(字符串" 10to6"或" 12to6"或" off")
我的服务器的时区是GMT。
代码:
function(timezone, timing) {
var utcDate = new Date();
var udate = utcDate.getTime();
udate += (Number(timezone) * 60 * 60 * 1000);
var userDate = new Date(udate);
if (userDate.getHours() > 0 && userDate.getHours() < 22) {
var firstStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() - 1, 22, 0, 0);
var firstEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 6, 0, 0);
var secondStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() - 1, 24, 0, 0);
var secondEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 6, 0, 0);
} else {
var firstStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 22, 0, 0);
var firstEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() + 1, 6, 0, 0);
var secondStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 24, 0, 0);
var secondEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() + 1, 6, 0, 0);
}
if (timing == "off") {
return true;
}
if (timing == "10to6") {
if (udate > firstStart.getTime() && udate < firstEnd.getTime()) {
return false;
}
} else if (timing == "12to6") {
if (udate > secondStart.getTime() && udate < secondEnd.getTime()) {
return false;
}
}
return true;
}
如果有任何其他更好的方法或方法证明这一点一直在运作,那么任何想法都是最受欢迎的。