我正在使用javaScript在工作日和营业时间(周一至周五08:00到16:50)之间显示元素。
我正在使用此代码:
var date = new Date();
var thisMin = date.getMinutes();
var thisHour = date.getHours();
var thisWeekday = date.getDay();
// True if Mon - Fri between 08:00 - 16:50
if (thisWeekday > 0 && thisWeekday < 6 && thisHour > 7 && (thisHour < 17 && thisMin <= 50)) {
alert("True");
} else {
alert("False");
}
- 但这是编码的最佳方式吗?它看起来像很多条件而且一直都在工作......用javaScript可以用更好的方式完成它吗?
感谢。
答案 0 :(得分:2)
请注意,您的条件有两个不同的部分“必须在一周内”和“必须在时间间隔内”。代码可以通过明确地更清楚地反映这一点。
对于时间比较,我会重新设定当前时间,以便您可以使用Date
的{{1}}和<=
运算符,而不是自己重新实现时间比较:
>=
手动测试:
var startTime = new Date(0, 0, 0, 8, 0);
var endTime = new Date(0, 0, 0, 16, 50);
var startWeekday = 1;
var endWeekday = 5;
function shouldDisplay() {
var d = new Date();
function withinWeekInterval() {
return (d.getDay() >= startWeekday &&
d.getDay() <= endWeekday);
}
function withinTimeInterval() {
var now = new Date(0, 0, 0, d.getHours(), d.getMinutes());
return (now >= startTime &&
now <= endTime);
}
return (withinWeekInterval() && withinTimeInterval());
}
答案 1 :(得分:0)
尝试以下代码:
var date = new Date();
var thisMin = date.getMinutes();
var thisHour = date.getHours();
var thisWeekday = date.getDay();
var isSuccess = false;
// True if Mon - Fri between 08:00 - 16:50
if (thisWeekday > 0 && thisWeekday < 6 && thisHour > 7 && (thisHour < 17)) {
if (thisHour == 16 && thisMin > 50) {
isSuccess = false;
} else {
isSuccess = true;
}
} else {
isSuccess = false;
}
alert(isSuccess);