javascript - 验证字符串时间范围
问题描述
我需要创建一个函数来验证以下情况:
还有一种可能是允许的开始范围是 23:00 到 04:00。在这种情况下,将不允许从 5:00 到 6:00 和 21:00 到 22:00 的范围。
目前我的代码正常验证这一天,但交叉的一天没有。
export default function isOutRangeStringTime({
initialTime,
finalTime,
allowedInitialTime,
allowedFinalTime,
}) {
if (allowedInitialTime === allowedFinalTime
|| allowedInitialTime >= allowedFinalTime
|| initialTime >= finalTime) {
return false;
}
return initialTime < allowedInitialTime || finalTime > allowedFinalTime;
}
这是我的代码不起作用的情况的图片。
我也需要验证才能跨天工作。
解决方案
当 allowedFinalTime < allowedInitialTime 时,可以考虑将 24h 添加到 allowedFinalTime
考虑使用日期对象。为简单起见,此示例使用数字:
function isOutRangeStringTime(
initialTime,
finalTime,
allowedInitialTime,
allowedFinalTime,
) {
if (allowedInitialTime === allowedFinalTime
|| initialTime === finalTime) {
return false;
}
if( allowedInitialTime > allowedFinalTime ) {
allowedFinalTime += 24
initialTime = (initialTime < allowedInitialTime) ? initialTime + 24 : initialTime;
finalTime = (finalTime < allowedInitialTime) ? finalTime + 24 : finalTime;
}
return initialTime > allowedInitialTime && finalTime < allowedFinalTime;
}
推荐阅读
- office-addins - 将新 manifest.xml 文件上传到 Office 应用商店时出错
- keycloak - Keycloak 自定义身份验证
- javascript - 在类定义中重置 setTimeout()
- .net - Azure 服务总线队列接收器是否有超时限制?
- python - Django / Pandas - 创建 Excel 文件并作为下载
- shell - grep 中的 --exclude-dir 选项无法按预期工作
- vb.net - 防止从 FolderBrowseDialog VB.Net 访问网络驱动器
- javascript - 数据存储在数组中,但对于特定元素,它在反应 js 中显示为未定义
- javascript - 使用 IF 评估特定字符串
- reactjs - 由于某种原因我无法运行这个反应应用程序,我不知道该怎么做