判断所选时间(或当前时间)是否处于特定时间段内——实用指南
核心代码示例:
设想我们有一个函数 `time_range`,它接受开始时间 `beginTime`、结束时间 `endTime` 和待判断的时间 `nowTime` 作为参数。我们的目标是判断 `nowTime` 是否处于 `beginTime` 和 `endTime` 之间。
我们将时间字符串转换为日期对象,然后进行比较。如果 `nowTime` 在 `beginTime` 和 `endTime` 之间,函数返回 `true`;否则,弹出一个提示框显示当前时间并不在该时间段内,并返回 `false`。
让我们看看代码如何实现:
```javascript
var time_range = function (beginTime, endTime, nowTime) {
var begin = beginTime.split(":");
var end = endTime.split(":");
var now = nowTime.split(":");
if (begin.length != 2 || end.length != 2 || now.length != 2) {
return false; // 输入的时间格式不正确
}
var b = new Date(); // 设置开始时间
var e = new Date(); // 设置结束时间
var n = new Date(); // 设置待判断的时间
b.setHours(parseInt(begin[0])); // 设置小时数
b.setMinutes(parseInt(begin[1])); // 设置分钟数
e.setHours(parseInt(end[0])); // 设置结束时间的小时数
e.setMinutes(parseInt(end[1])); // 设置结束时间的分钟数
n.setHours(parseInt(now[0])); // 设置待判断时间的小时数
n.setMinutes(parseInt(now[1])); // 设置待判断时间的分钟数
// 判断当前时间是否在该时间段内(不考虑日期)
if (n.getTime() - b.getTime() > 0 && n.getTime() - e.getTime() < 0) {
return true; // 在时间段内
} else {
alert("当前时间是 " + n.getHours() + ":" + n.getMinutes() + ",不在该时间范围内!"); // 不在时间段内,弹出提示框显示当前时间信息并返回 false。"); // 不在时间段内,弹出提示框显示当前时间信息并返回 false。"); // 不在指定时间段内,提示当前时间信息并返回 false。"); // 当前时间不在指定时间段内,显示提示信息并返回 false。"); // 显示提示信息并返回 false。"); // 返回 false 并弹出提示信息。"); // 提示用户当前时间不在指定范围内并返回 false。"); // 当前时间不在设定的时间段内,请确认您的输入是否正确。"); // 当前时间不在该时间段内,请检查您的设置是否正确。"); // 返回错误提示信息。"); // 提示框弹出错误提示信息。"); 弹出提示框,显示当前时间和错误消息,函数返回 false。"); 函数返回 false 并弹出提示框告知用户当前时间不在指定范围内。"); 提示框弹出,告知用户当前时间不在设定的时间段内。"); 当前时间不在设定的时间段内,请重新确认或选择其他时间进行后续操作。",并显示弹窗进行提醒);随后返回 false 作为函数返回值。)首先执行弹窗提醒操作(提醒内容为当前时间不在设定的时间段内),然后返回 false。"}function time_range {\t// 定义函数开始时间和结束时间的分割字符串和待判断的时间字符串\tvar strb = beginTime.split(":"), stre = endTime.split(":"), strn = nowTime.split(":");\t// 判断输入的时间格式是否正确\tif (strb.length != 2 || stre.length != 2 || strn.length != 2) {\t\treturn false;\t}\t// 创建三个新的日期对象,分别代表开始时间、结束时间和待判断的时间\tvar b = new Date(), e = new Date(), n = new Date();\t// 分别设置这些日期的时分秒为输入的时间值(注意转换成数字类型)\tb.setHours(parseInt(strb[0]), parseInt(strb[1]));e.setHours(parseInt(stre[0]), parseInt(stre[1]));n.setHours(parseInt(strn[0]), parseInt(strn[1]));\t// 判断待判断的时间是否在开始时间和结束时间的范围内(注意比较时间的毫秒值)\tif (n.getTime() >= b.getTime() && n.getTime() <= e.getTime()) {\t\treturn true;\t} else {\t\talert(\"当前时间是 \" + n.getHours() + \":\"