javascript - 使用 24 小时格式的小时列表填充数组

标签 javascript jquery time

我有两个输入来选择每小时范围,如下所示:

<input type="text" id="from" name="from" value="1:00" />
<input type="text" id="to" name="to" value="20:00" />

我使用 jQuery 将数据存储在类似数组的波纹管中:

["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]

如果结束时间输入大于开始时间输入,我找到了一种方法,如下所示

let hoursTo = $('#to').val();
let hoursFrom = $('#from').val();
if (hoursFrom < hoursTo) {
        for (let i = hoursFrom; i <= hoursTo; i++) {
            runHoursArray.push(i.toString());
        }
    }else {
// need help in the store logic in order to cover nightshifts 
}

但这不包括夜类,因此,我需要帮助来存储如下数据。

预期结果:

如果我选择 19:00 到 2:00,它应该显示如下:

["19","20","21","22","23","0","1","2"]

注意:我只想存储时间

谢谢。

最佳答案

根据解释和大量假设,我正在写这个答案。

在写答案之前,我希望你纠正这部分。您需要 .val() 进行比较。您没有比较元素。

let hoursTo = $('#to').val();
let hoursFrom = $('#from').val();

如果您还想添加夜类,那么是的,您必须允许这样的值。你能做的是,检查时长,如果时长不人道,比如23小时(一般没有人喜欢工作23小时),就告诉它无效。

为此,您可以执行以下操作:

let hoursFrom = +$('#from').val();
let hoursTo = +$('#to').val();

$("button").click(function () {
  if ((hoursFrom > hoursTo && hoursTo + 24 - hoursFrom <= 12) || hoursFrom <= hoursTo) {
    console.log("Valid");
  } else {
    console.log("Invalid");
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="from" type="number" />
<input id="to" type="number" />
<button>Validate</button>

关于javascript - 使用 24 小时格式的小时列表填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61591311/

相关文章:

javascript - 为什么 .html() 不适用于使用 jquery 的 SVG 选择器?

c++ - 稳定的时钟在系统范围内稳定吗?

JavaScript:通过传递的参数从数组中删除元素

javascript - 将值从一个元素复制到另一个元素

javascript - 子字符串不适用于 childNodes[0].nodeValue

javascript - JSON 对象被引号分隔

Linux Shell - 字符串操作然后以分钟为单位计算文件的年龄

java - 将 DateFormat 设置为当前日期和时间

javascript - fullCalendar 自定义事件函数抛出非函数错误

javascript - 如何将node与mysql一起用于react.js前端?